반응형

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의 배수인지를 판별!

 

반응형
반응형

https://www.codetree.ai/missions/4/problems/a-to-b/description

 

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

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

www.codetree.ai

 

코드

import java.util.Scanner;

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

        int a = sc.nextInt();
        int b = sc.nextInt();
        int result = 0;
        // a에서 시작해서 조건에 따라 커지다가 b보다 커지는 순간에 종료
        // 홀수->2배
        // 짝수->+3

        System.out.print(a + " ");
        for (int i = a; i <= b;) {
            if (i % 2 == 0)
                i += 3;
            else
                i *= 2;
            
            if (i <= b)
                System.out.print(i + " ");
        }  

        sc.close();
    }
}

 

 

설명

System.out.print(a + " ");

- 예를 들어 '2, 13'을 입력하면 조건에 따라 계산 후 '2 5 10 13'이 나와야 한다.

- 그런데 양쪽을 보니 a와 b의 값이 있다.

- 먼저 a는 그대로 출력을 해주고 나머지는 계산 후 하나씩 출력을 해줄것이다.

 

        for (int i = a; i <= b;) {
            if (i % 2 == 0)
                i += 3;
            else
                i *= 2;
            
            if (i <= b)
                System.out.print(i + " ");
        }

- a부터 b까지 돌도록 for문을 걸어준다

- 조건문으로 짝수일때는 3씩 증가시켜주고, 

  홀수일때는 2씩 곱해지도록 if문을 걸어준다.

- 그리고 이 코드대로라면 i가 증가된 상태로 출력이 되버리기 때문에

- 조건문으로 b를 넘지 않으면 출력하게 걸어준다.

반응형
반응형

https://www.codetree.ai/missions/4/problems/from-high-to-low/description

 

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

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

www.codetree.ai

 

코드

import java.util.Scanner;

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

        int a = sc.nextInt();
        int b = sc.nextInt();

        for (int i = Math.max(a, b); i >= Math.min(a, b); i--) {
            System.out.print(i + " ");
        }

        sc.close();
    }
}

 

반응형

+ Recent posts