알고리즘

[프로그래머스] 두 원사이의 정수 쌍/파이썬 python

changha. 2024. 2. 28. 16:42

 

분류: 구현

## 틀린 코드 
import math
def solution(r1, r2):
    answer = 0
    answer += (r2-r1+1)*4
    cnt = 0
    for i in range(1, r2):
        for j in range(math.ceil(math.sqrt(r1**(2) - i**(2))),int(math.sqrt((r2**(2) - i**(2))))+1):
            if j == 0:
                continue
            cnt += 1
    cnt *= 4
    answer = answer + cnt
    return answer

x,y축과 그 사이 점들을 따로 분리해서 구하려고 하였음

- x,y축에 있는 점 갯수

- 1~(r2-1)사이에 있는 점 갯수 x 4

이런식으로 로직을 짰는데 테스트코드에서는 맞았지만 제출 시 런타임 에러..

일단 이 식은 보류 


 

 

import math
def solution(r1, r2):
    answer = 0
    
    for i in range(1, r2+1):
        if i < r1:
            s = math.ceil(math.sqrt(r1**(2) - i**(2)))
        else:
            s = 0
        e = int(math.sqrt(r2**(2) - i**(2)))
        answer += e - s + 1
    
    answer *= 4
    
    return answer

1사분면만 포함해서 

e-s 로 갯수 구하는 방식 

위의 내풀이는 일일이 검증해야 됐다면 e-s로 효율적으로 갯수 확인 가능