본문 바로가기
Problem Solving/Baekjoon

[백준] 2002 추월 - Data Structure / Java

by graycode 2023. 3. 13.

 문제 링크

 

2002번: 추월

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

www.acmicpc.net

 

 풀이 과정

차량별 진입 순서를 Map에 저장하고, 출구에서 나온 차량의 진입 순서를 배열에 저장한다.

 

만약 출구에서 나온 차량의 진입 순서가 이후에 나온 차량보다 크다면 이는 추월한 차량이므로

이때 카운트를 증가시키는 방식으로 추월한 차량의 개수를 구한다.

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());

        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < n; i++)
            map.put(br.readLine(), i);

        int[] arr = new int[n];
        for (int i = 0; i < n; i++)
            arr[i] = map.get(br.readLine());


        int cnt = 0;
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                if (arr[i] > arr[j]) {
                    cnt++;
                    break;
                }
            }
        }

        bw.write(String.valueOf(cnt));
        bw.flush();
    }

}

댓글