티스토리 뷰
해설
원 안에 있는 정점의 개수를 구하는 문제이다.
4분면을 전부 계산하는 것은 부담이 되기 때문에 1분면만 검사하고 *4 해준다.
작은 원의 정점들을 구할 때는 테두리에 정점을 포함하는 원들을 주의해야 한다.
문제 설명
x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요.
※ 각 원 위의 점도 포함하여 셉니다.
제한 사항
- 1 ≤ r1 < r2 ≤ 1,000,000
입출력 예
r1 r2 result
2 | 3 | 20 |
입출력 예 설명
그림과 같이 정수 쌍으로 이루어진 점은 총 20개 입니다.
코드
#include <string>
#include <vector>
#include <math.h>
#include <iostream>
using namespace std;
long long solution(int r1, int r2)
{
long long R2 = r2;
for(long long i=1;i<r2;i++)
R2 += (long long)sqrt((long long)r2*r2 - i*i);
R2 = R2*4+1;
long long R1 = r1-1;
for(long long i=1;i<r1;i++)
{
long long tmp = (long long)sqrt((long long)r1*r1 - i*i);
if(tmp*tmp + i*i == (long long)r1*r1)
R1 += tmp - 1;
else
R1 += tmp;
}
R1 = R1*4+1;
cout << R2 << " , "<<R1;
return R2 - R1;
}
'공부 > 코딩테스트' 카테고리의 다른 글
[ 프로그래머스 C++ ] 하샤드 수 lv1 (0) | 2023.06.20 |
---|---|
[ 프로그래머스 C++ ] 택배상자 lv2 (0) | 2023.06.19 |
[ 프로그래머스 C++ ] 호텔 대실 lv2 (0) | 2023.06.14 |
[ 프로그래머스 C++ ] 숫자 변환하기 lv2 (0) | 2023.06.13 |
[ 프로그래머스 C++ ] 시소 짝꿍 lv2 (1) | 2023.06.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- IMGUI
- 너비우선탐색
- DFS
- 정렬
- 힙
- 데디케이티드
- 완전탐색
- 프로그래머스
- BFS
- 고득점kit
- level3
- Ue
- 개인공부
- Unreal 5.1
- Heap
- C++
- sort
- 해시
- 디자인 패턴
- greedy
- 고득점 Kit
- 스택/큐
- FPS
- 채팅서버
- 탐욕법
- UE5
- LV3
- LV2
- 재귀
- 누적합
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함