TIL(Today I Learned)
99클럽 코테 스터디 8일차 TIL + LeetCode 2283 (Check if Number Has Equal Digit Count and Digit Value, java)
zincah
2025. 4. 9. 21:33
반응형
오늘의 학습 키워드
- 문자열
- HashMap
- 반복문
문제 탐색하기
문제
문제 풀이 설계하기
문자열의 길이만큼 반복을 하였을 때 각 인덱스의 숫자가 문자열 내에 몇개 존재하는 지가 문자열의 인덱스 위치의 문자와 같으면 true이고 인덱스의 숫자가 문자열 내에 존재하는 수치와 다르다면 false를 리턴해주면 되는 문제입니다.
예시 문제를 통해 설명을 하자면
== 1번째 예제 ==
String str = "1210"
index 0 : 0은 str안에 1개 존재하므로 str.charAt(0)-'0' : 1 과 동일
index 1 : 1은 str안에 2개 존재하므로 str.charAt(1)-'0' : 2 와 동일
index 2 : 2는 str안에 1개 존재하므로 str.charAt(2)-'0' : 1 과 동일
index 3 : 3은 str안에 0개 존재하므로 str.charAt(3)-'0' : 0 과 동일
즉 true 리턴
== 2번째 예제 ==
String str = "030"
index 0 : 0은 str안에 2개 존재하므로 str.charAt(0)-'0' : 0 과 다름 --> false 리턴
이렇게 비교해주는 코드를 작성해주면 됩니다.
코드
class Solution {
public boolean digitCount(String num) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int i=0; i<num.length(); i++){
int cnt = num.charAt(i) - '0';
map.put(i, cnt);
}
boolean result = true;
for(int index : map.keySet()){
int cnt = 0;
for(int i=0; i<num.length(); i++){
if(index == num.charAt(i)-'0'){
cnt++;
}
}
if(map.get(index) != cnt){
result = false;
break;
}
}
return result;
}
}
오늘의 회고
문제를 해석하는 시간도 꽤 걸렸지만 문제를 남들이 알아보기 쉽게 설명하기 위해서 많은 생각을 했습니다. 설명하는 것도 중요하다는 것을 느낄 수 있었습니다.
반응형