💡 오늘의 학습 키워드
- 이분 탐색
✅ 오늘 공부한 내용
- getOrDefault
- 오늘의 백준 문제! 10816번 숫자 카드 2
👀 오늘의 회고
🤣 오늘의 문제점
- 늘 그랫듯이..시간초과 ㅠ..
🔥 어떤 시도를 했는가?
- 초반에는 m의 숫자들을 hashmap에 추가한 다음에 출력하려 했으나? 비효율적인지 시간초과가 뜨기 시작했다...
- 일단 BufferedReader로 입력 받고
- split하여 배열에 담은 뒤에 LinkedHashMap에 담아서
- for문을 한번 더 돌려 n의 숫자들이 있을 때 getOrDefault로 + 1을 하여 넣으려 했으나..
- 안타깝게도 시간 초과가 떴기에..
- ChatGpt가 추천해준 방법으로 다시 해보게 되었다.
- 비효율적인 split은 한 문장으로 줄여준 다음
- HashMap에 n의 숫자들을 더해주었다.
- 그 다음 바로 StringBuilder를 사용하여 m의 숫자들이 있으면 해당 숫자의 value값을 넣고, 아니라면 0을 넣게 사용했더니
- 엄청 깔끔한 코드가 나왔다.
- 하지만 메모리 및 시간초과가 매우 아슬아슬 했기에 조금 더 빠르게 할 수 있는 방법을 찾아야겠다
- 아래는 제출한 코드!
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
// 첫째 줄 상근이가 가지고 있는 개수 N
// 숫자 카드가 적혀 있는 정수
// 셋째 줄 M
// 넷째 줄 몇개 가지고 있는가
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] ns = br.readLine().split(" ");
int m = Integer.parseInt(br.readLine());
String[] ms = br.readLine().split(" ");
// HashMap으로 키를 선정한 이후? 값들이 있으면 추가하면 되지 않나?
Map<Integer, Integer> hsm = new HashMap<>();
for(String num : ns){
int number = Integer.parseInt(num);
hsm.put(number, hsm.getOrDefault(number, 0) + 1);
}
StringBuilder answer = new StringBuilder();
for(String num : ms){
int number = Integer.parseInt(num);
answer.append(hsm.getOrDefault(number, 0)).append(" ");
}
System.out.println(answer.toString());
}
}
👏 무엇을 새로 알았는가?
- getOrDefault를 저렇게 사용할 수 있는지 몰랐고.. (나는 그냥 key에서 value값 가져올 때만 쓰는 줄 알았다..ㅎ..)
- gpt가 설명하기를
- 키가 맵에 존재하지 않아도 기본 값을 지정할 수 있어 안전하게 조회가 가능하고,
- 맵을 초기화 할 때 모든 키를 미리 0으로 초기화하지 않아도 되며, 키가 없으면 기본 값인 0을 반환하도록 만들었고,
- 키가 맵에 존재하는지 여부를 검사하고 그에 따라 값을 가져오는 두 단계를 하나로 합칠 수 있어 코드가 간결해지기 때문
- 이라고 얘기하였다.
- 좀 적극적으로 써먹을만 해서 잘 외워놔야 겠다!
👩💻 내일은 무엇을 학습할 것인가?
- 항해 99문제풀고
- 원티드 제발 제출해~~!!
'개인 공부 > TIL' 카테고리의 다른 글
[ TIL - PGS ] 99클럽 코테 스터디 16일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.06 |
---|---|
[ TIL - PGS ] 99클럽 코테 스터디 15일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.05 |
[ TIL - PGS ] 99클럽 코테 스터디 13일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.03 |
[ TIL - PGS ] 99클럽 코테 스터디 12일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.02 |
[ TIL - PGS ] 99클럽 코테 스터디 11일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.01 |