[우아한테크 도전기] 이전 기수 프리코스 1주차_3번 연습

Dev_ch·2023년 9월 1일
0

우아한테크 도전기

목록 보기
25/51
post-thumbnail

해당 포스팅은 이전 기수 프리코스 1주차 3번 문제를 풀어보았다.

문제

난이도가 높은 문제는 아니지만, 구현 방식에 있어서 고민을 했다.

풀이

private static int solution(int number) {
        int[] arr = new int[number + 1];

        for (int i = 1; i <= number; i++) {
            arr[i] = arr[i - 1] + count369(i);
        }

        return arr[number];
    }

    private static int count369(int target) {
        int count = 0;

        while (target > 0) {
            int digit = target % 10;
            if (digit == 3 || digit == 6 || digit == 9) {
                count++;
            }
            target /= 10;
        }

        return count;
    }

잡담

처음에는 배열로 분리하지않고 sum++을 해서 retrun sum 을 하는 형식이였다. 하지만 이렇게 하다보니 기능을 분리하는 면에서 좋은 것 같지 않아 배열로 바꾸게 되었다. DP..? 라고 볼수는 없지만 기능 분리를 위해 배열을 사용한거나 다름 없다.

아쉬운점

결국 while을 돌면서 자릿수를 전부 확인하면서 count를 하는 형식이다보니 숫자가 커질수록 오래걸릴 것 이다. 이를 개선할 수 있는 방법이 있다면 적용해보고 싶다,,

profile
내가 몰입하는 과정을 담은 곳

0개의 댓글