LeetCode 2283-Check if Number Has Equal Digit Count and Digit Value
You are given a 0-indexed string num of length n consisting of digits.
Return true if for every index i in the range 0 <= i < n, the digit i occurs num[i] times in num, otherwise return false.
Constraints:
Example 1:
즉, 표로 정리하면 다음과 같다.
자리(i) | num[i] | 의미 |
---|---|---|
0번 자리 | '1' | 숫자 '0'은 1번 나와야 함 |
1번 자리 | '2' | 숫자 '1'은 2번 나와야 함 |
2번 자리 | '1' | 숫자 '2'는 1번 나와야 함 |
3번 자리 | '0' | 숫자 '3'은 0번 나와야 함 |
만족하므로 true이다.
Example 2:
자리(i) | num[i] | 의미 |
---|---|---|
0번 자리 | '0' | 숫자 '0'은 0번 나와야 함 |
1번 자리 | '3' | 숫자 '1'은 3번 나와야 함 |
2번 자리 | '0' | 숫자 '2'는 0번 나와야 함 |
즉, false이다.
class Solution {
public boolean digitCount(String num) {
int[] count = new int[10]; // 숫자 0~9의 등장 횟수를 저장할 배열
// 1단계: num 문자열을 순회하면서 각 숫자의 등장 횟수를 센다
for (char c : num.toCharArray()) {
int digit = c - '0'; // '3' 같은 문자 → 숫자 3으로 바꿔줌
count[digit]++; // 해당 숫자 등장 횟수 증가
}
// 2단계: num[i]와 실제 count[i]가 같은지 확인
for (int i = 0; i < num.length(); i++) {
int expected = num.charAt(i) - '0'; // num[i] → 기대되는 등장 횟수
if (count[i] != expected) {
return false; // 하나라도 틀리면 false
}
}
return true; // 전부 통과하면 true
}
}
이번 문제는 문제 자체가 뭔 소리를 하나 싶어서 문제 이해에만 5분 넘게 사용한 것 같다..