https://www.acmicpc.net/problem/1620
접근 :
- 도감에 입력할 포켓몬의 갯수 N 을 입력 받는다.
- 검증할 입력 갯수 M을 받는다.
- 이름으로 조회하는 방법, 인덱스로 조회하는 방법 2가지를 구현하기 위해 각각 map으로 구현한다.
( 메모리는 낭비되지만 검색 속도는 향상)
- 검증 문자열이 숫자로만 이루어진 경우, 인덱스로 조회하는 맵을 사용
- 검증 문자열이 영어 알파벳으로만 이루어진 경우, 이름으로 조회하는 맵을 사용한다
코드 구현 :
import java.io.*;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// n, m 입력
String[] inputs = br.readLine().split(" ");
int n = Integer.parseInt(inputs[0]);
int m = Integer.parseInt(inputs[1]);
HashMap<Integer, String> index_to_name = new HashMap<>();
HashMap<String, Integer> name_to_index = new HashMap<>();
String input = "";
// 입력받은 이름을 번호 조회용 map 과 이름 조회용 map 으로 각각 저장
for (int i = 1; i <= n; i++) {
input = br.readLine();
index_to_name.put(i, input);
name_to_index.put(input, i);
}
for (int j = 0; j < m; j++) {
input = br.readLine();
// 입력이 숫자로만 구성된 경우
if (input.matches("^[0-9]+$")) {
sb.append(index_to_name.get(Integer.parseInt(input)));
// 입력이 영어로만 구성된 경우
} else if (input.matches("^[a-zA-Z]+$")) {
sb.append(name_to_index.get(input));
}
sb.append("\n");
}
System.out.println(sb);
br.close();
}
}
'JAVA > Coding Test' 카테고리의 다른 글
[JAVA] 백준 1764 듣보잡_집합과맵 (0) | 2023.03.04 |
---|---|
[JAVA] 백준 10816 숫자 카드 2_집합과맵 (0) | 2023.03.03 |
[JAVA] 백준 14425 문자열 집합 (0) | 2023.03.02 |
[JAVA] 백준 10815 숫자카드_집합과맵 (0) | 2023.03.01 |
[JAVA] 백준 10870 피보나치 수 5_ 재귀함수 (0) | 2023.03.01 |