https://school.programmers.co.kr/learn/courses/30/lessons/181187
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
- 1, 2, 3, 4사분면 중 1사분면 쪽만 구하고 * 4를 해주기로 했다.
- 1000000까지라 그냥 for문 한번으로 하려고 했다.
#include <string>
#include <cmath>
#include <vector>
#include <iostream>
using namespace std;
long long solution(int r1, int r2) {
long long answer = 0;
long long r12 = (long long)r1 * r1;
long long r22 = (long long)r2 * r2;
for(long long i = 1; i <= r2; i++) {
long long ii = (long long)i * i;
double r1h = 0;
if (i < r1) {
r1h = sqrt(r12 - ii);
}
double r2h = sqrt(r22 - ii);
long long cnt = floor(r2h) - ceil(r1h) + 1;
answer += cnt;
}
return answer * 4;
}
- 타입에 주의해야 하는 문제다.
- int로 생각없이 하다가 틀렸다..
반응형
'PS' 카테고리의 다른 글
| [프로그래머스 Lv.2] 광물 캐기 (0) | 2025.12.18 |
|---|---|
| [프로그래머스 Lv.2] 과제 진행하기 (0) | 2025.12.17 |
| [프로그래머스 Lv.2] 연속된 부분 수열의 합 (0) | 2025.12.14 |
| [프로그래머스 Lv.2] 석유 시추 (0) | 2025.12.13 |
| [프로그래머스 Lv.2] 도넛과 막대 그래프 (0) | 2025.12.12 |