세용용용용
2023. 11. 24. 16:12


코딩테스트 연습 - 점 찍기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 코드
def solution(k, d):
answer = 0
# 좌표를 이동하며 거리가 d이하 인것 카운트 해주기
for i in range(1000001):
pt_ct = 0
for j in range(1000001):
if (((i*k)**2)+((j*k)**2))**(1/2)>d:
break
pt_ct+=1
# 더 이상 추가할 좌표가 없으면 break
if pt_ct != 0:
answer += pt_ct
else:
break
#print(answer)
return answer


시간 초과....... 흙흙흙
새로운 코드
def solution(k, d):
answer = 0
# x좌표를 돌며
# 가능한 y값 증감시켜주기
for i in range(0,d+1,k):
y = int(((d**2)-(i**2))**(1/2))
answer += (y//k)+1
return answer
1. for문을 하나만 쓰며 x값을 순회
2. 가능한 y값을 증감해준다