접근 방법
HashMap을 사용한다면 어렵지 않은 문제다.
이 문제에서 문자열로 번호를 찾고, 번호로 문자열을 찾기 때문에 문자열과 번호가 서로 연결되어 있어야 한다.
HashMap을 사용해서 하나는 key 값을 문자열, value를 번호로 만들고 다른 하나는 반대로 하면 쉽게 구현할 수 있다.
이후 입력받은 줄이 문자열인지 숫자인지만 구분해서 반환해주면 쉽게 해결.
코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int M = in.nextInt();
HashMap<String, Integer> nameToNum = new HashMap<String, Integer>();
HashMap<Integer, String> numToName = new HashMap<Integer, String>();
StringBuilder sb = new StringBuilder();
for(int i = 1; i <= N; i++){
String name = in.next();
nameToNum.put(name, i);
numToName.put(i, name);
}
for(int i = 0; i < M; i++){
String temp = in.next();
if(isNum(temp)) sb.append(numToName.get(Integer.parseInt(temp))+"\n");
else sb.append(nameToNum.get(temp)+"\n");
}
System.out.println(sb);
in.close();
}
public static boolean isNum(String str){
for(int i = 0; i < str.length(); i++){
if(!Character.isDigit(str.charAt(i))) return false;
}
return true;
}
}
'알고리즘 > Class 3' 카테고리의 다른 글
백준 BOJ 1697번 (0) | 2022.08.19 |
---|---|
백준 BOJ 1676번 (0) | 2022.08.19 |
백준 BOJ 1541번 (0) | 2022.08.18 |
백준 BOJ 1463번 (0) | 2022.08.16 |
백준 BOJ 1389번 (0) | 2022.08.16 |
댓글