코테

99클럽 코테 스터디 10일차 TIL + [LeetCode 2283번] Check if Number Has Equal ...

pipinstall 2025. 4. 9. 21:58

오늘의 학습 키워드

  • 문자열 처리
  • 배열을 활용한 빈도 계산

[LeetCode 2283. Check if Number Has Equal Digit Count and Digit Value 문제]

문제 요약

  • 각 인덱스 i에 있는 숫자는 문자열 전체에서 숫자 i가 등장한 횟수여야 한다.
  • 이 조건이 모든 인덱스에서 만족하면 true, 아니면 false를 리턴한다.

해결 방법

  • 각 숫자가 몇 번 등장했는지를 세는 배열을 하나 만든다.
  • 문자열 num을 순회하면서 등장 횟수를 카운트.
  • 다시 한 번 num을 돌면서, i번째 문자의 숫자 값과 i가 등장한 횟수를 비교한다.
  • 하나라도 불일치하면 false, 전부 맞으면 true.

핵심 포인트

문자열 안의 숫자를 단순한 문자로 보지 않고, 조건이 되는 기준값으로 해석해야 한다.

Java 코드 (문자열 + 배열 활용)

    public boolean digitCount(String num) {
        boolean flag = true;
        String[] tmpArr = num.split("");
        int cnt = 0;
        int baseCnt = 0;
        for (int i = 0; i < tmpArr.length; i++) {
                baseCnt = Integer.parseInt(tmpArr[i]);
                cnt = 0;
            for(String j : tmpArr) {
                if(Integer.parseInt(j) == i) {
                    cnt++;
                }
            }
            if(baseCnt != cnt) {
                flag = false;
                return flag;
            }
        }
        return flag;
    }

오늘의 회고

What?

문자열을 숫자처럼 다뤄야 하는 문제였고, 인덱스와 값이 뒤바뀐 개념이라는것을 인지함

How?

각 인덱스에 있는 값 = 해당 인덱스 숫자가 등장한 횟수 라는 조건을 파악하고 해결.

Point?

  • 배열을  활용