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

김영민·2024년 9월 3일
0

코딩테스트

목록 보기
24/32

문제

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

  • 두 원 사이의 정수 개수를 구하는 문제이다.
  • 원과 겹치는 좌표도 포함한다.

코드

from math import ceil, floor, sqrt
def solution(r1, r2):
    answer = 0
    for i in range(1,r2+1):
        if i  < r1:
            answer += (floor(sqrt(r2*r2-i*i)) - ceil(sqrt(r1*r1-i*i))+1)
        else:
            answer += (floor(sqrt(r2*r2-i*i))+1)
    print(answer)
    answer *=4
    return answer

풀이

  • 처음에는 x좌표와 y좌표를 선언한 뒤, for문 2개를 돌려서 가능한 좌표들을 저장하여 최종 개수를 구하도록 하였다.
    - 시간 초과 발생
  • 다음과 같이 i를 x좌표를 기준으로 진행하여 i가 r1 반지름보다 작을 때는 사이 값의 개수를 구할 수 있도록 함 (y값이 될 때를 봄).
  • i가 r2보다 클 때는 최대값만 봄.

0개의 댓글