728x90
반응형
백준
https://www.acmicpc.net/problem/1620
- 오늘의 학습 키워드 : 해시를 사용한 집합과 맵
- 공부한 내용 본인의 언어로 정리하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// N : 포켓몬의 개수, M : 맞춰야 하는 문제 개수
String[] string = br.readLine().split(" ");
int N = Integer.parseInt(string[0]);
int M = Integer.parseInt(string[1]);
// 도감
Map<String, Integer> mapKeyString = new HashMap<>(); // key : 포켓몬 이름
Map<Integer, String> mapKeyInteger = new HashMap<>(); // key : 도감 번호
// 도감 포켓몬 목록 받기
for (int i=0; i<N; i++) {
String dogam = br.readLine();
mapKeyString.put(dogam, i+1);
mapKeyInteger.put(i+1, dogam);
}
// 문제 맞추기
for (int i=0; i<M; i++) {
String input = br.readLine();
// 입력 값이 숫자인지 확인
boolean isNumberic = input.chars().allMatch(Character::isDigit);
// 숫자인 경우 {1, "Bulbasaur"}
if (isNumberic) {
// key가 있으면 value 값 저장
if (mapKeyInteger.containsKey(Integer.parseInt(input)))
sb.append(mapKeyInteger.get(Integer.parseInt(input))).append("\n");
} else { // 문자인 경우 {"Bulbasaur", 1}
// key가 있으면 value 값 저장
if (mapKeyString.containsKey(input))
sb.append(mapKeyString.get(input)).append("\n");
}
}
System.out.println(sb);
}
}
- 오늘의 회고 : Map 하나만 사용해서 value에 for문으로 하나씩 접근하는 방법을 했더니 시간 초과가
코테 풀이 중에 제일 중요한 건 시간 초과를 어떻게 하면 안 할 수 있을지와 어떻게 해결할 수 있을지가 관건인 것 같다.
String과 Integer 둘다 key로 접근하고 싶어서 Map을 두 개 구현해서 해결했다.
99클럽 1기를 수강하면서 작성한 글입니다.
728x90
반응형
'Blog > Sparta' 카테고리의 다른 글
99클럽 코테 스터디 15일차 TIL + DP (0) | 2024.04.08 |
---|---|
99클럽 코테 스터디 14일차 TIL + Map key 사전순 정렬 (0) | 2024.04.07 |
99클럽 코테 스터디 12일차 TIL + Set (0) | 2024.04.05 |
99클럽 코테 스터디 11일차 TIL + 이분 탐색 (0) | 2024.04.04 |
99클럽 코테 스터디 10일차 TIL + List/Map (0) | 2024.04.03 |
댓글