풀이
- 알고리즘을 풀 때, 뭔가 항상 효율적으로 풀자라는 생각에
- 시간이 좀 오래걸리는 경우도 있었는데
- 이제는 그냥 단순히 최대한 빨리 푸는 것에 집중하고자 다짐
- 우선 해당 문제에선 빠르게 풀기 위해선
- 그냥 Map과 배열을 모두 활용하는게 좋을 것 같아
- 그대로 적용해보니 수월하게 풀이 완료.
- 다만 입력값이 문자열인지 숫자인지 정확하지 않은 것에 대한
- 판별을 위해서, 별도의 함수를 작성.
- 해당 함수는 정규식을 활용해서 숫자인지 문자인지 판별.
- 이후 다른 코드를 보면서 입력값이 일정하게 정수, 문자열로만 주어진다면
- 두 번째 코드로 해결한다면 더 빠르게 해결할 수 있음.
// 첫 번째 코드
import java.io.*;
import java.util.*;
public class _1620 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
String[] pokemon = new String[N];
Map<String, Integer> dic = new HashMap<>(N);
for (int i=0; i<N; i++) {
String poke = br.readLine();
pokemon[i] = poke;
dic.put(poke,i+1);
}
while (M>0) {
String inp = br.readLine();
if (isNum(inp)) bw.write(pokemon[Integer.parseInt(inp)-1]+"\n");
else bw.write(dic.get(inp)+"\n");
M--;
}
bw.flush();
}
public static boolean isNum(String str) {
return str.matches("\\d+");
}
}
// 두 번째 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
String[] pokemon = new String[N];
Map<String, Integer> dic = new HashMap<>(N);
for (int i=0; i<N; i++) {
String poke = br.readLine();
pokemon[i] = poke;
dic.put(poke,i+1);
}
while (M>0) {
String inp = br.readLine();
if (Character.isDigit(inp.charAt(0))) bw.write(pokemon[Integer.parseInt(inp)-1]+"\n");
else bw.write(dic.get(inp)+"\n");
M--;
}
bw.flush();
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 1735번] 분수 합 (0) | 2024.11.12 |
---|---|
[백준, 자바, 13241번] 최소공배수 (0) | 2024.11.12 |
[백준, 자바, 7785번] 회사에 있는 사람 (0) | 2024.11.11 |
[백준, 자바, 14425번] 문자열 집합 (0) | 2024.11.11 |
[백준, 자바, 19532번] 수학은 비대면강의입니다 (0) | 2024.11.11 |