안녕하세요!
오늘은 프로그래머스 두 원 사이의 정수 쌍 문제를 풀어볼게요~
https://school.programmers.co.kr/learn/courses/30/lessons/181187
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음에 굉장히 쉽게 당연히 원 안에 생기는 도형은 정사각형이겠지~
하다가 완전 다틀렸어용 ㅋㅋㅋㅋㅋㅋ
원의 방정식을 이용해서 x값 별로 y값의 개수를 세면 된답니다!
x, y축 점들은 따로 미리 개수를 구해놓고
1사분면에서의 개수만 구해서 4배 한 후에 더하면 됩니다.
전체 코드 첨부할게요!
#include <string>
#include <vector>
#include <cmath>
using namespace std;
long long Calc(int x, int r, bool onCeil)
{
if(x > r)
{
return 0;
}
double y = sqrt(pow(r, 2) - pow(x, 2));
y = onCeil == true ? ceil(y) : floor(y);
return y;
}
long long solution(int r1, int r2) {
long long answer = 0;
long long x = 1;
long long overlaps = (r2 - r1 + 1) * 4;
while(x < r2)
{
long long a = Calc(x, r1, true);
long long b = Calc(x, r2, false);
if(a == 0) a = 1;
answer += (b - a + 1);
x++;
}
return (4 * answer) + overlaps;
}'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 광물 캐기 (C++) (0) | 2024.10.21 |
|---|---|
| 프로그래머스 택배 배달과 수거하기 (C++) (0) | 2024.10.21 |
| 프로그래머스 달리기 경주 (C++) (1) | 2024.10.05 |
| 프로그래머스 [PCCE 기출문제] 10번 / 데이터 분석 (C++) (1) | 2024.10.03 |
| 프로그래머스 [PCCE 기출문제] 9번 / 이웃한 칸 (C++) (1) | 2024.10.03 |