본문 바로가기
BaekJoon/Silver

[BOJ/JAVA] 백준 2002 : 추월 (자바)

by HoonSikE 2023. 1. 25.
반응형
SMALL
문제 정보
  문제명   - 추월
  난이도   - 실버 I
문제 번호 - 2002번

문제 링크

https://www.acmicpc.net/problem/2002

 

2002번: 추월

입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이

www.acmicpc.net


문제
대한민국을 비롯한 대부분의 나라에서는 터널 내에서의 차선 변경을 법률로 금하고 있다. 조금만 관찰력이 있는 학생이라면 터널 내부에서는 차선이 파선이 아닌 실선으로 되어 있다는 것을 알고 있을 것이다. 이는 차선을 변경할 수 없음을 말하는 것이고, 따라서 터널 내부에서의 추월은 불가능하다.
소문난 명콤비 경찰 대근이와 영식이가 추월하는 차량을 잡기 위해 한 터널에 투입되었다. 대근이는 터널의 입구에, 영식이는 터널의 출구에 각각 잠복하고, 대근이는 차가 터널에 들어가는 순서대로, 영식이는 차가 터널에서 나오는 순서대로 각각 차량 번호를 적어 두었다.
N개의 차량이 지나간 후, 대근이와 영식이는 자신들이 적어 둔 차량 번호의 목록을 보고, 터널 내부에서 반드시 추월을 했을 것으로 여겨지는 차들이 몇 대 있다는 것을 알게 되었다. 대근이와 영식이를 도와 이를 구하는 프로그램을 작성해 보자.

입력
입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이가 적은 차량 번호 목록이 주어진다. 각 차량 번호는 6글자 이상 8글자 이하의 문자열로, 영어 대문자('A'-'Z')와 숫자('0'-'9')로만 이루어져 있다.
같은 차량 번호가 두 번 이상 주어지는 경우는 없다.

출력
첫째 줄에 터널 내부에서 반드시 추월을 했을 것으로 여겨지는 차가 몇 대인지 출력한다.

예제 입력/출력
예제 입력 예제 출력
4
ZG431SN
ZG5080K
ST123D
ZG206A
ZG206A
ZG431SN
ZG5080K
ST123D
1
5
ZG508OK
PU305A
RI604B
ZG206A
ZG232ZF
PU305A
ZG232ZF
ZG206A
ZG508OK
RI604B
5
ZG206A
PU234Q
OS945CK
ZG431SN
ZG5962J
ZG5962J
OS945CK
ZG206A
PU234Q
ZG431SN
2

알고리즘 분류
● 구현
● 자료 구조
● 문자열
● 해시를 사용한 집합과 맵

소스코드
package Lv2_Silver;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

/**
 * @author HanHoon
 * @category 구현, 자료 구조, 문자열, 해시를 사용한 집합과 맵
 * https://www.acmicpc.net/problem/2002
 */
public class BOJ_S1_2002_추월 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder str = new StringBuilder();
        int result = 0;
        
        // N개의 라인
        int N = Integer.parseInt(br.readLine());

        // 차례대로 들어가는 N개의 차량 Input
        HashMap<String, Integer> map = new HashMap<>();
        for (int i = 0; i < N; i++) {
            String tmp = br.readLine();
            map.put(tmp, i);
        }
        // 터널을 빠져나오는 차량에 원래 순번을 입력
        int[] arr = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = map.get(br.readLine());
        }

        // 차량 순서대로 확인
        for (int i = 0; i < N-1; i++) {
            // 뒷 차량 중 나보다 순번이 낮은 차량이 있다면 추월차량으로 판정
            for (int j = i+1; j < N; j++) {
                if(arr[i] > arr[j]) {
                    result++;
                    break;
                }
            }
        }

        str.append(result);
        System.out.println(str.toString());

        map.clear();
        br.close();
    }
}

 


BaekJoon List
 

BaekJoon List

BOJ Start!! ● [BOJ] 백준 회원가입, 시작하는 법 ● [BOJ] 등급(티어) 및 Solved.AC 적용 ● [BOJ/JAVA] 백준 소스코드 제출 시 유의사항(자바) Bronze ● Bronze V  - ● Bronze IV  - ● Bronze III  -..

han-hoon.tistory.com


  

기회는 준비된 자에게 찾아온다.

 


 

반응형
LIST

댓글