문제를 읽고 떠오른 생각은 입력 값을 배열에 넣고 M에 대한 입력 값을 정규식으로 Integer 과 String 판별을 진행하면 되겠다!
그렇게 하기 위해서 HashMap과 arr 에 값을 입력하고 정규식으로 matches() 를 사용하였다.
정규식 사용 예시 코드
// 숫자를 찾기 위한 정규식
String REGEX = "[0-9]+";
String str = br.readLine();
// 입력값에 숫자가 있으면
if(str.matches(REGEX))
{
~
}
소스코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
// 숫자를 찾기 위한 정규식
String REGEX = "[0-9]+";
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// HashMap index를 맞추기 위해 +1
// 입력 값을 저장할 배열 2개 선언
String[] arr = new String[N+1];
HashMap<String, Integer> map = new HashMap<>();
// HashMap index를 맞추기 위해 +1
for(int i=1;i<N+1;i++)
{
String name = br.readLine();
map.put(name, i);
arr[i] = name;
}
while(M-- >0)
{
String str = br.readLine();
// 입력값에 숫자가 있으면
if(str.matches(REGEX))
{
sb.append(arr[Integer.parseInt(str)]+"\n");
}
else
{
sb.append((map.get(str))+"\n");
}
}
System.out.println(sb);
}
}