[백준 20916] 안녕 2020 안녕 2021 [Java]
2025. 7. 29. 15:38ㆍPS 풀이/Baekjoon Online Judge
문제
20916번: 안녕 2020 안녕 2021
boj.ma
풀이
문제 요약
두 수의 합이 “안녕한 정수”가 되는 쌍의 개수를 구하자.
아이디어
두 수의 합은 최대 9자리 이므로 “안녕한 정수”를 미리 선언하고, “안녕한 정수”에서 임의의 수를 뺀 수를 찾으면 된다. lower/upper bound로 쌍을 세면서 탐색하자.
static final int[] helloNums = {
202021, 20202021, 202002021, 202012021,
202022021, 202032021, 202042021, 202052021,
202062021, 202072021, 202082021, 202092021
};
// Solve
Arrays.sort(arr);
long res = 0;
for (int i = 0; i < N; ++i) {
for (int helloNum : helloNums) {
int val = helloNum - arr[i];
int l = lowerBound(arr, val, i + 1, N);
int r = upperBound(arr, val, i + 1, N);
res += (r - l);
}
}
풀이 시간
30분
소스코드
https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/normal/20916.java
'PS 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
| [백준 03000] 직각 삼각형 [Java] (2) | 2025.07.31 |
|---|---|
| [백준 32964] 재미있는 파이프 퍼즐 [Java] (2) | 2025.07.30 |
| [백준 18242] 네모네모 시력검사 [Java] (2) | 2025.07.28 |
| [백준 31671] 특별한 오름 등반 [Java] (3) | 2025.07.27 |
| [백준 24544] 카카오뷰 큐레이팅 효용성 분석 [Java] (0) | 2025.07.26 |