몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 2] 두 원 사이의 정수 쌍 {언어 : Python} 본문

알고리즘

프로그래머스 [Lv. 2] 두 원 사이의 정수 쌍 {언어 : Python}

스위태니 2024. 4. 5. 01:18

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/181187

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드

from math import sqrt, ceil
def solution(r1, r2):
    cnt = 0
    for i in range(1, r2+1):
        si = i ** 2
        minCnt = 0
        if r1 > i:
            minCnt = ceil(sqrt(r1 ** 2 - si))
        maxCnt = int(sqrt(r2 ** 2 - si))
        cnt += maxCnt - minCnt + 1
            
    
    answer = cnt * 4
    return answer

풀이 방법

  1. 반지름 길이를 1부터 늘려가면서 있을 수 있는 점을 cnt에 저장한다.
  2. i가 r1보다 작으면 안되므로 주의한다.
  3. answer * 4를 해서 사사분면의 점들의 개수를 구한다.
  4. math.sqrt() 제곱근
  5. math.ceil() 소수점 올림
  6. math.floor() 소수점 내림

느낀점

  • 이렇게 풀 수 있구나를 느끼면서 앞으로 레벨2도 다 풀어야 겠다고 느꼈다.