프로그래머스/2레벨
[프로그래머스/C++] 두 원 사이의 정수 쌍
Koalitsiya
2024. 3. 12. 17:36
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
long long solution(int r1, int r2) {
long long answer = 0;
// 축을 제외한 한 사분면에 존재할 수 있는 정수 좌표의 수 구하기
for (int i = 1; i < r2; ++i) {
int bigRound = 0;
int smallRound = 0;
// 큰 원 내부에서 x좌표가 i일 때 존재할 수 있는 정수 좌표의 수
bigRound = floor(sqrt(pow(r2, 2) - pow(i, 2)));
if(i < r1)
// 작은 원 내부에서 x좌표가 i일 때 존재할 수 있는 정수 좌표의 수
smallRound = ceil(sqrt(pow(r1, 2) - pow(i, 2)));
else
smallRound = 1;
answer += (bigRound - smallRound + 1);
}
// 4 x (한 사분면의 좌표 수 + 한 축 위에 존재할 수 있는 큰 원과 작은 원 사이의 좌표 수(= r2 -r1 + 1))
return 4 * (answer + r2 - r1 + 1);
}