-
2002번: 추월
입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이
www.acmicpc.net
문제
해당 문제는 터널에 들어가는 차량의 번호가 순서대로 주어지고, 터널을 나온 차량의 번호가 주어졌을 때 추월한 차량의 개수를 구하는 문제다.
조건
차량 번호는 6글자 이상 8글자 이하의 문자열, 영어 대문자('A'-'Z')와 숫자('0'-'9')로만 이루어져 있다.
같은 차량 번호가 두 번 이상 주어지는 경우는 없다.
풀이
해당 문제는 map을 이용해 해결했다.
먼저 map에 터널에 진입하는 차량의 번호와 순서를 넣어준 뒤, 배열을 선언해서 빠져나온 차량의 들어온 순서를 넣어준다. 이후 2중 반복문으로 현재 차량과 뒤에 오는 차량을 모두 비교하면서 만약 추월한 차량이 존재하면 ans를 증가하는 방식으로 문제를 해결했다.
코드
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedHashMap; import java.util.Map; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Map<String, Integer> map = new LinkedHashMap<String, Integer>(); int N = Integer.parseInt(br.readLine()); for (int i = 0; i < N; i++) { map.put(br.readLine(), i); // 차량 번호별로 순서를 넣어줌 } int[] end = new int[N]; for (int i = 0; i < N; i++) { end[i] = map.get(br.readLine()); // 배열에 차량이 나온거에 해당하는 들어온 순서를 저장함. } int ans = 0; // 결과값 저장 for (int i = 0; i < N-1; i++) { for (int j = i+1; j < N; j++) { // 2중 반복문을 돌면서 현재값이 뒤에 남은 차량보다 크면 추월한 차량 if(end[i] > end[j]) { ans++; break; } } } System.out.println(ans); } }
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 3184 양 JAVA (0) 2022.01.17 Baekjoon 8911 거북이 JAVA (0) 2022.01.16 Baekjoon 2910 빈도 정렬 JAVA (0) 2022.01.12 Baekjoon 14442 벽 부수고 이동하기 2 JAVA (0) 2022.01.11 Baekjoon 17391 무한부스터 JAVA (0) 2022.01.10 댓글