하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능
[3코1파] 2023.01.04~ (120일차)
[4코1파] 2023.01.13~ (111일차)
[1스4코1파] 2023.04.12~ (22일차)
[1스4코2파] 2023.05.03 ~ (1일차)
2023.05.03 [120일차]
프로그래머스 LV 2
두 원 사이의 정수 쌍
https://school.programmers.co.kr/learn/courses/30/lessons/181187
문제 설명
x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요.
※ 각 원 위의 점도 포함하여 셉니다.
제한사항
1 ≤ r1 < r2 ≤ 1,000,000
입출력 예
입출력 예 설명
그림과 같이 정수 쌍으로 이루어진 점은 총 20개 입니다.
문제 풀이 방법
원에 속하는 점의 수를 원의 방정식을 이용해 푸는 그지 같은 문제이당.
x2 + y2 = r2 이므로, 어떠한 x에 대하여 원에 해당하는 점의 수는 int((r2-x2)0.5)
0사분면만 구한 후 4배하고 x, y축 위에 있는 점의 수를 더해서 풀면 되는 것... (ㅗ)
참고한 velog
https://sasca37.tistory.com/320
내 코드
def solution(r1, r2):
answer = 0
for i in range(1,r2):
if r1>i:
tmp = (r1**2-i**2)
else:
tmp = 0
y1 = int(tmp**0.5)
y2 = int((r2**2-i**2)**0.5)
answer += y2-y1 + (1 if y1**2 == tmp else 0)
answer +=1
return 4*answer
증빙
다른 사람 풀이
이거랑
이거는 함수로 예쁘게 풀어서 뽀려와봄
여담
프로그래머스 2단계 10문제 남았다..
남들꺼 안보고 내가 푼건 104개 중에 몇개나 될까
외우면 어짜피 내꺼임 ^^