[프로그래머스] 점 찍기
사용 언어: Python3
문제
풀이
나의 풀이
import sys
sys.setrecursionlimit(10**6)
def solution(k, d):
global cnt
# (0, 0) ~ (x1, y1) 거리
def calcDist(x1, y1):
return (x1**2+y1**2)**(1/2)
dx, dy = [k, k, 0], [0, k, k]
def DFS(x, y):
print(x, y)
visited.append((x, y))
for w in range(3):
xx, yy = x+dx[w], y+dy[w]
if calcDist(xx, yy) > d:
continue
if (xx, yy) in visited:
continue
DFS(xx, yy)
visited = [] # 찍은 점의 좌표
DFS(0, 0)
return len(visited)
- 테스트 케이스: 통과
- 제출 결과: 런타임에러
다른 풀이
def solution(k, d):
cnt = 0
for x in range(0, d+1, k): # ✅ x좌표 순회하면서
# ✅ y좌표 몇 개 찍을 수 있는지
# x**2 + y**2 <= d**2 이니까 y <= sqrt(d**2 - x**2) 여야 한다
y_max = int((d**2 - x**2)**0.5)
# y_max에서 소수점 제거 후 k로 나누어 몇 개 찍을 수 있는지 계산 (+1은 x축에 붙어있는 점까지 포함하기 위해)
cnt += y_max // k + 1
return cnt
- 테스트 케이스: 통과
- 제출 결과: 통과
💛 개인 공부 기록용 블로그입니다. 👻