Skip to content

Commit f3dda00

Browse files
committed
[Silver II] Title: 추월, Time: 108 ms, Memory: 14280 KB -BaekjoonHub
1 parent 82f5e9d commit f3dda00

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# [Silver II] 추월 - 2002
2+
3+
[문제 링크](https://www.acmicpc.net/problem/2002)
4+
5+
### 성능 요약
6+
7+
메모리: 14280 KB, 시간: 108 ms
8+
9+
### 분류
10+
11+
자료 구조, 해시를 사용한 집합과 맵, 구현, 문자열
12+
13+
### 제출 일자
14+
15+
2024년 12월 17일 10:55:57
16+
17+
### 문제 설명
18+
19+
<p>대한민국을 비롯한 대부분의 나라에서는 터널 내에서의 차선 변경을 법률로 금하고 있다. 조금만 관찰력이 있는 학생이라면 터널 내부에서는 차선이 파선이 아닌 실선으로 되어 있다는 것을 알고 있을 것이다. 이는 차선을 변경할 수 없음을 말하는 것이고, 따라서 터널 내부에서의 추월은 불가능하다.</p>
20+
21+
<p>소문난 명콤비 경찰 대근이와 영식이가 추월하는 차량을 잡기 위해 한 터널에 투입되었다. 대근이는 터널의 입구에, 영식이는 터널의 출구에 각각 잠복하고, 대근이는 차가 터널에 들어가는 순서대로, 영식이는 차가 터널에서 나오는 순서대로 각각 차량 번호를 적어 두었다.</p>
22+
23+
<p>N개의 차량이 지나간 후, 대근이와 영식이는 자신들이 적어 둔 차량 번호의 목록을 보고, 터널 내부에서 반드시 추월을 했을 것으로 여겨지는 차들이 몇 대 있다는 것을 알게 되었다. 대근이와 영식이를 도와 이를 구하는 프로그램을 작성해 보자.</p>
24+
25+
### 입력
26+
27+
<p>입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이가 적은 차량 번호 목록이 주어진다. 각 차량 번호는 6글자 이상 8글자 이하의 문자열로, 영어 대문자('A'-'Z')와 숫자('0'-'9')로만 이루어져 있다.</p>
28+
29+
<p>같은 차량 번호가 두 번 이상 주어지는 경우는 없다.</p>
30+
31+
### 출력
32+
33+
<p>첫째 줄에 터널 내부에서 반드시 추월을 했을 것으로 여겨지는 차가 몇 대인지 출력한다.</p>
34+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
8+
int N = Integer.parseInt(br.readLine());
9+
10+
Queue<String> queue = new LinkedList<>();
11+
for(int i = 0; i < N; i++) {
12+
queue.add(br.readLine());
13+
}
14+
15+
Set<String> set = new HashSet<>();
16+
int answer = 0;
17+
18+
for(int i = 0; i < N; i++) {
19+
String curCar = br.readLine();
20+
21+
// 이미 지나간 차량 처리
22+
while(!queue.isEmpty() && set.contains(queue.peek())) {
23+
queue.poll();
24+
}
25+
26+
// 추월 확인
27+
if(queue.isEmpty() || !curCar.equals(queue.peek())) {
28+
answer++;
29+
set.add(curCar);
30+
} else {
31+
queue.poll();
32+
}
33+
}
34+
35+
System.out.println(answer);
36+
}
37+
}

0 commit comments

Comments
 (0)