반응형

https://www.codetree.ai/missions/4/problems/369-game/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        for (int i = 1; i <= n; i++) {
            if (i % 3 == 0 || Include369(i)) {
                System.out.print(0 + " ");
            } else
                System.out.print(i + " ");
        }


        sc.close();
    }

    public static boolean Include369(int num) {
        boolean result = false;

        while (num != 0) {
            int digit = num % 10;
            if (digit == 3 || digit == 6 || digit == 9) {
                result = true;
                break;
            }
            num /= 10;
        }
        return result;
    }


}

 

설명

- 먼저 따로 만든 메소드부터 설명하겠습니다.

public static boolean Include369(int num) {
        boolean result = false;

        while (num != 0) {
            int digit = num % 10;
            if (digit == 3 || digit == 6 || digit == 9) {
                result = true;
                break;
            }
            num /= 10;
        }
        return result;
}

- '3, 6, 9'중에 하나라도 들어가있는지를 판별하는 메소드이다.

- 먼저 result를 false로 선언합니다. 거짓보다 참인 조건의 갯수가 적으니깐요!

- while문으로 'num != 0'을 한 이유는 나머지가 남지 않을때까지 돌리도록 하기 위함입니다.

- 10으로 나눈 나머지를 통해 '3, 6, 9'가 들어있는지 판별을 합니다.
- 점점 일의 자리, 10의 자리, 100의 자리를 판별합니다.

- 만약 나오면 result를 true로 값을 변환 후 break로 반복문을 빠져나옵니다.

 

for (int i = 1; i <= n; i++) {
            if (i % 3 == 0 || Include369(i)) {
                System.out.print(0 + " ");
            } else
                System.out.print(i + " ");
}

- 메소드에서 구한 참, 거짓인지와 i가 3의 배수인지를 판별!

 

반응형

+ Recent posts