알고리즘/[항해99] 1일 1알고리즘 스터디

99클럽 코테 스터디 8일차 TIL ✒️문자 개수 세기

hooooolly 2025. 4. 10. 00:25

✅ 오늘의 학습 키워드

  • int[] 배열 사용하기

🔍 오늘의 문제 분석

↘️ 오늘의 문제 바로가기 ↘️

 

  • 문자열 num 이 주어진다
  • 문자열의 인덱스가 문자열 안에 등장하는 횟수를 카운트한다
  • 각 인덱스의 실제 숫자 값과 횟수가 일치하면 true를 아니면 false를 반환한다

 


✨ 오늘의 회고

📌내가 적은 답안📌

더보기
class Solution {
    public boolean digitCount(String num) {
        int cnt;

    for (int i = 0; i < num.length(); i++) { //i = 0
      int com = 0;
      cnt = num.charAt(i) - '0'; //1

      for (int j = 0; j < num.length(); j++) {
        if ((num.charAt(j) - '0') == i) com++;
      }

      if (cnt != com) return false;
    }

    return true;
    }
}

처음에는 위 코드처럼 이중 반복문을 사용해서 각 숫자의 등장 횟수를 일일이 세는 방식으로 풀었다. 그리고 이중 반복문을 사용하고 싶지 않아서 int[] 배열을 사용해 보았다. 각 자릿수의 숫자는 0~9까지만 등장하는 것을 활용해서 배열의 크기를 10으로 지정했다.

class Solution {
    public boolean digitCount(String num) {
    int[] count = new int[10];
    
    for (int i = 0; i <num.length(); i++) {
      int digit = num.charAt(i) - '0';
      count[digit]++;
    }
    
    for (int i = 0;i<num.length();i++) {
      if (count[i] != (num.charAt(i) - '0')) return false;
    }
    
    return true;
    }
}