https://www.acmicpc.net/problem/1620
분류 : 자료 구조, 이분 탐색, 이진 검색 트리
더보기
import java.io.*;
import java.util.*;
public class Main {
static Myscanner sc = new Myscanner();
static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
public static void main(String[] args) {
int N = sc.nextInt();
int M = sc.nextInt();
Map<Integer,String> map1 = new HashMap<>();
Map<String, Integer> map2 = new HashMap<>();
for(int i=1;i<=N;i++)
{
String str = sc.next();
map1.put(i, str);
map2.put(str, i);
}
for(int i=1;i<=M;i++)
{
String s = sc.next();
if(s.charAt(0)-'0'>=0 && s.charAt(0)-'0'<=9){
out.println(map1.get(Integer.parseInt(s)));
}
else{
out.println(map2.get(s));
}
}
out.flush();
}
}
class Myscanner {
BufferedReader br;
StringTokenizer st;
Myscanner() {
br = new BufferedReader(new InputStreamReader(System.in));
}
String next() {
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
}
map을 이용하여 풀면 되는 문제.
처음에는 map 하나만을 이용해서 해결하려고 했다가 시간 초과가 떠서 map 2개를 만들어
입력받은 String이 숫자일 경우 map1에서 get, 문자일 경우 map2에서 get을 하도록 만들었다.
'PS' 카테고리의 다른 글
[BOJ]2352번 : 반도체 설계 (0) | 2017.04.20 |
---|---|
[BOJ]1890번 : 점프 (0) | 2017.04.20 |
[BOJ]1874번 : 스택 수열 (0) | 2017.04.17 |
[BOJ]1931번 : 회의실 배정 (0) | 2017.04.17 |
[BOJ]1600번 : 말이 되고픈 원숭이 (0) | 2017.04.14 |