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;
    }
}

 

 

오늘의 회고

문제를 해석하는 시간도 꽤 걸렸지만 문제를 남들이 알아보기 쉽게 설명하기 위해서 많은 생각을 했습니다. 설명하는 것도 중요하다는 것을 느낄 수 있었습니다.

 

반응형