문제 설명이 좀.. .길다...
그냥 위에는 읽지않고 입출력 부분만 보고 풀었다.
Map을 사용하면 간단하게 풀수 있는 문제이다.
다만 이 문제도 n과 m이 100,000까지 들어올 수 있어서 시간초과가 날수있다.
처음에는 HashMap을 하나만 생성해서 숫자가 입력되면 key값으로 value를 찾고
문자면 keySet을 반환해서 value로 key를 찾았다. 다만 keySet으로 반환해서
탐색하는 시간이 걸려서 시간 초과가 났다.
그래서 그냥 HashMap을 2개 생성해서 풀었다.
실패 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
HashMap<Integer, String> hm1 = new HashMap<>();
for (int i = 1; i < n + 1; i++) {
String st = br.readLine();
hm1.put(i, s);
}
for (int i = 0; i < m; i++) {
String s = br.readLine();
if (s.chars().allMatch(Character :: isDigit)) {
sb.append(map.get(Integer.parseInt(s))).append("\n");
} else {
for(int key : map.keySet()) {
String value = map.get(key);
if(value.equals(s)) {
sb.append(key).append("\n");
}
}
}
}
System.out.println(sb);
}
}
최종 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
HashMap<Integer, String> hm1 = new HashMap<>();
HashMap<String, Integer> hm2 = new HashMap<>();
for (int i = 1; i < n + 1; i++) {
String s = br.readLine();
hm1.put(i, s);
hm2.put(s, i);
}
for (int i = 0; i < m; i++) {
String temp = br.readLine();
// 숫자인지 판별
if (temp.chars().allMatch(Character :: isDigit)) {
sb.append(hm1.get(Integer.parseInt(temp))).append("\n");
} else {
sb.append(hm2.get(temp)).append("\n");
}
}
System.out.println(sb);
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 카카오 프렌즈 컬러링북 (0) | 2022.06.12 |
---|---|
(Java) 프로그래머스 수식 최대화 (0) | 2022.06.11 |
(Java) 백준 1764 - 듣보잡 (0) | 2022.06.09 |
(Java) 백준 1697 - 숨바꼭질 (0) | 2022.06.08 |
(Java) 백준 7569 - 토마토 (0) | 2022.06.08 |