코딩테스트 공부/java

백준 1620. 나는야 포켓몬 마스터 이다솜

책다니엘 2024. 12. 31. 05:33

문제:

 

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

 

나의 첫 번째 풀이(시간초과) - Map 활용

package test;

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;
import java.util.StringTokenizer;

public class test67 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		try {
			HashMap<Integer, String> pokemons = new HashMap<>();
			StringTokenizer st = new StringTokenizer(br.readLine());
			int n = Integer.parseInt(st.nextToken());
			int m = Integer.parseInt(st.nextToken());
			for (int i = 1; i <= n; i++) {
				int key = i;
				String name = br.readLine();
				pokemons.put(key, name);
			}
			for (int i = 0; i < m; i++) {
				String lookFor = br.readLine();
				if (lookFor.matches("\\d+")) {
					int key = Integer.parseInt(lookFor);
					bw.write(pokemons.get(key));
				} else {
					for (Map.Entry<Integer, String> entry : pokemons.entrySet()) {
						if (entry.getValue().equals(lookFor)) {
							bw.write(String.valueOf(entry.getKey()));
						}
					}

				}
				if (i < m - 1) {
					bw.write("\n");
				}
			}
			bw.flush();
			bw.close();
			br.close();
		} catch (NumberFormatException | IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

 

나의 두번째 풀이 - ArrayList와 Map을 동시에 사용(정답)

package test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.StringTokenizer;

public class test67 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		try {
			List<String> pokemonList = new ArrayList<>();
			HashMap<String, Integer> pokemonMap = new HashMap<>();
			StringTokenizer st = new StringTokenizer(br.readLine());
			int n = Integer.parseInt(st.nextToken());
			int m = Integer.parseInt(st.nextToken());
			for (int i = 1; i <= n; i++) {
				String name = br.readLine();
				pokemonList.add(name);
				pokemonMap.put(name, i);
			}
			for (int i = 0; i < m; i++) {
				String lookFor = br.readLine();
				if (lookFor.matches("\\d+")) {
					int key = Integer.parseInt(lookFor);
					bw.write(pokemonList.get(key - 1));
				} else {
					bw.write(String.valueOf(pokemonMap.get(lookFor)));
				}
				if (i < m - 1) {
					bw.write("\n");
				}
			}
			bw.flush();
			bw.close();
			br.close();
		} catch (NumberFormatException | IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

'코딩테스트 공부 > java' 카테고리의 다른 글

백준 11866. 요세푸스 문제  (0) 2025.01.17
백준 1764. 듣보잡  (0) 2025.01.03
24511. queuestack  (7) 2024.12.28
백준 10989. 수 정렬하기 3(카운팅 정렬)  (0) 2024.12.21
백준 1018. 체스판 다시 칠하기  (2) 2024.12.20