본문 바로가기

백준/JAVA

[Baekjoon/JAVA] 1681번 - 줄 세우기

Baekjoon Online Judge

문제로 이동

 

문제

민승이는 N(1 ≤ N ≤ 1,000,000)명의 학생들에게 양의 정수로 된 라벨을 붙이려고 한다. 하지만 모든 학생들은 숫자 L(0 ≤ L ≤ 9)이 자신의 라벨 숫자에 포함되길 원치 않는다. 

문제는 학생들에게 숫자 L을 쓰지 않고 최소한 작은 N개의 양의 수 세트를 라벨링 할 때 학생들이 받는 라벨 중 가장 큰 수가 몇인지를 구하는 것이다.

 

입력

첫째 줄에 N과 L이 공백으로 구분되어 주어진다.

 

출력

첫째 줄에 민승이가 학생들에게 붙이는 라벨 중 가장 큰 수를 출력한다.

 


예제 입력 예제 출력
10 1 22

풀이

import java.util.Scanner;

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

        int N = in.nextInt(); // N명의 학생들
        int L = in.nextInt(); // 사용하지 않는 수

        int count = 0; // 라벨이 붙은 학생의 수
        int i; // 현재 라벨의 번호

        for (i = 1; ; i++) {
            boolean notWant = false; // 학생들이 해당 숫자를 원하는가?

            // 숫자 검사
            for (int j = i; j > 0; j /= 10) {
                if (j % 10 == L) {
                    notWant = true;
                    break;
                }
            }

            if (!notWant) count++;

            if (count == N) break;
        }

        // 출력
        System.out.println(i);
    }
}

모든 학생들이 라벨을 받을 때까지 숫자들을 하나하나 검사해서 문제를 풀었다.

'백준 > JAVA' 카테고리의 다른 글

[Baekjoon/JAVA] 1731번 - 추론  (0) 2023.01.22
[Baekjoon/JAVA] 1718번 - 암호  (1) 2023.01.21
[Baekjoon/JAVA] 1673번 - 치킨 쿠폰  (0) 2023.01.19
[Baekjoon/JAVA] 15829번 - Hashing  (0) 2023.01.18
[Baekjoon/JAVA] 1672번 - DNA 해독  (1) 2023.01.17