728x90
반응형
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/181187
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반응형
728x90
👩💻 코드
#include <string>
#include <vector>
#include <cmath>
#include <iostream>
using namespace std;
long long solution(int r1, int r2) {
long long answer = 0;
for (long long x = 1; x < r2; x++) {
long long minY = (x < r1) ? ceil(sqrt((long long)r1 * r1 - x * x)) : 1;
long long maxY = floor(sqrt((long long)r2 * r2 - x * x));
answer += maxY - minY + 1;
}
answer *= 4;
return answer + (r2 - r1 + 1) * 4;
}
📝 풀이
좌표를 4등분하여 x와 y가 모두 양수인 경우의 점만 계산합니다.
x 좌표 값을 기준으로 최소 y좌표의 값과 최대 y좌표의 값을 구합니다.
최소 y좌표 값은 작은 원을 기준으로 구한 후 올림을 합니다.
최대 y좌표 값은 큰 원을 기준으로 구한 후 내림을 합니다.
두 y좌표 값의 차와 경계에 있는 점도 포함하기 위해 +1를 더해줍니다.
좌표를 4등분하여 구했으므로 *4를 해줍니다.
최종적으로 원 위에 있는 점까지 더하여 return 해줍니다.
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이모티콘 할인행사 (1) | 2024.10.21 |
---|---|
[프로그래머스] N-Queen (0) | 2024.10.21 |
[프로그래머스] 과제 진행하기 (1) | 2024.10.18 |
[프로그래머스] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 (1) | 2024.10.17 |
[프로그래머스] 후보키 (0) | 2024.10.17 |