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

2023. 7. 11. 11:04백준 & 프로그래머스

문제 출처

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

 

프로그래머스

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

programmers.co.kr

 

 

 

문제 풀이 및 코드

 

기본적으로 가능한 r,c들을 돌면서, 해당 좌표가 두 원 사이에 있는 지 확인하는 방식은 시간초과가 발생한다. 구간을 나누어서 계산해도 마찬가지였다. 해당 문제는 r 에 따른 최대 c를 구하는 방법을 사용해서 계산해야한다. 즉 특정 r에 대해  r1, r2 거리를 가지기 위한 c를 구하고, 'r2에 대한 c - r1에 대한 c' 방법을 활용해야 한다. 피타고라스를 통해 계산할 수 있으며 해당 값을 정수로 변환하여 계산해야 한다.

 

 

 

처음 필자가 짠 코드는 다음과 같다. 밑에 이쁘게 정리된 코드가 있으니 굳이 살펴보지 않아도 될 것이다.

 

 

해당 알고리즘과 같지만 추천수가 많은 코드도 가져왔다.

 

 

 

 

코드 짜는 게 미숙하는 생각이 든다. 

먼저 r1이상일 경우에 대해 조건문을 추가하는 것이 아니라 for문을 나누어서 한다면 더 효율적일 것이다.

또한 r1의 최대 c가 정수일 경우 -1을 계산해주었는 데 루트전에 -1을 계산해준다면, 정수로 나왔을 때 발생하는 문제를 해결할 수 있다.

 

정답자 알고리즘에서 r1, r2의 제곱 부분을 미리 세팅을 해놓는다면 더 빠른 코드를 작성할 수 있을 것이라고 생각했다. 따라서 다음과 같은 코드로 정리했다.