반응형
🔺 문제
19637번: IF문 좀 대신 써줘
첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭
www.acmicpc.net
🔺 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(st.nextToken()); // 칭호 수
int M = Integer.parseInt(st.nextToken()); // 캐릭터 수
String[][] strArr = new String[N][2];
for(int i = 0 ; i < N ; i++) {
st = new StringTokenizer(br.readLine(), " ");
strArr[i][0] = st.nextToken();
strArr[i][1] = st.nextToken();
}
for(int i = 0 ; i < M ; i++) {
int find = Integer.parseInt(br.readLine());
/** 🔔 이분 탐색 🔔 **/
int left = 0;
int right = N - 1;
int mid = (left + right) / 2;
while(left <= right) {
mid = (left + right) / 2;
int arrNum = Integer.parseInt(strArr[mid][1]);
if(arrNum < find) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
sb.append(strArr[left][0]).append("\n");
}
System.out.println(sb);
}
}
|
cs |
✅ 해결 아이디어
✔ 이분 탐색
- 2중 for문을 썼다간 시간 초과 이슈 발생
💥 유의사항
• 숫자 범위가 꽤 크다... ⇨ 이중 for문하면 시간 초과. 이진 탐색
🔺 다른 풀이들
- 비슷한데 2차원 배열 대신 1차원 배열 2개 사용하셨고, 출력할 때 BufferedWriter 쓰셔서
메모리랑 시간이 조금 더 작으신..
로그인
www.acmicpc.net
💬 느낀 점
다음에 풀 땐 꼬옥 맞춰줄게...
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
[백준] 19637번: IF문 좀 대신 써줘
게임 개발자인 밀리는 전투력 시스템을 만들어, 캐릭터가 가진 전투력을 기준으로 칭호를 붙여주려고 한다.예를 들어, 전투력 10,000 이하의 캐릭터는 WEAK, 10,000 초과 그리고 100,000 이하의 캐릭터
velog.io
백준 19637번 - IF문 좀 대신 써줘
입력되는 숫자들의 제한을 보면 10만, 10억.. "칭호는 전투력 상한값의 비내림차순으로 주어진다" 등 이분탐색으로 풀어야 한다는 힌트가 조금씩 보인다그러므로 이분탐색으로 풀면된다. boj/19637
velog.io
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 1644번: 소수의 연속합 (0) | 2023.07.10 |
---|---|
[백준/JAVA] 4179번: 불! (0) | 2023.07.10 |
[백준/JAVA] 7576번: 토마토 (0) | 2023.07.08 |
[백준/JAVA] 1012번: 유기농 배추 (0) | 2023.07.07 |
[백준/JAVA] 1026번: 보물 (0) | 2023.07.07 |