티스토리 뷰

[문제]

출처 : https://school.programmers.co.kr


[해설]

 

- 열심히 뻘짓한 흔적, 혹시나 규칙이 있지 않을까 했는데 역시나 없다.

/*
    1   1       16  26      31  61
    2   2       17  28      32  62
    3   4       18  29      33  64
    4   5       19  40      34  65
    5   7       20  41      35  67
    6   8       21  44      36  68
    7   10      22  46      37  70
    8   11      23  47      38  71
    9   14      24  49      39  74
    10  16      25  50      40  76
    11  17      26  52
    12  19      27  55
    13  20      28  56
    14  22      29  58
    15  25      30  59
*/
/*
    1,2,1,2,1,2,1,3,2,1,2,1,2,3,1,2,1,11,
    1,3,2,1,2,1,2,3,1,2,1,2,1,2,1,2,1,2,1,3,2
*/

- 문제 정답은 맞췄다. 아래는 나의 풀이

- 3과 관련된 숫자가 없는 배열(int[] base = new int[100])을 만든 후 n을 index 값으로 취급하여 base[n-1]로 answer에 값을 대입하는 방식으로 진행했다.

- 당연한 얘기지만 base 배열의 index는 0부터 시작하고 argument인 n은 1부터 시작하므로 base[n-1]을 해줘야한다.

class Solution {
    public int solution(int n) {
        int[] base = new int[100];
        int idx = 0;
        int num = 1;
        while(idx < 100) {
            String numStr = String.valueOf(num);
            if((num % 3 == 0) || (numStr.indexOf("3") != -1)) {
                num++;
                continue;
            } else {
                base[idx] = num;
                idx++;
                num++;
            }
        }
        int answer = base[n - 1];
        return answer;
    }
}

리소스가 이만큼 들었다.

- 다른 사람 풀이1

- 아래의 방법들이 확실히 코드도 간단하고 나의 풀이보다 리소스도 적게 들었다.

class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i = 1; i <= n; i++) {
            answer++;
            if (answer % 3 == 0 || String.valueOf(answer).contains("3")) i--;
        }
        return answer;
    }
}

- 다른 사람 풀이2

class Solution {
    public int solution(int n) {
        int answer = 0;

        for (int i = 0; i < n; i++) {
            answer++;
            while (answer % 3 == 0 || String.valueOf(answer).contains("3")) {
                answer++;
            }
        }
        return answer;
    }
}

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함