프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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);
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스/C++] 단체사진 찍기 (0) | 2024.03.12 |
---|---|
[프로그래머스/C++] 당구 연습 (0) | 2024.03.12 |
[프로그래머스/C++] 테이블 해시 함수 (0) | 2024.03.12 |
[프로그래머스/C++] 광물 캐기 (0) | 2024.03.12 |
[프로그래머스/C++] 과제 진행하기 (0) | 2024.03.12 |