1515 수 이어 쓰기

YUZE·2025년 12월 10일
  • 처음 틀렸던 코드

생각했던 로직
1. 밖에서 number를 생성하고
2. 해당 number에 해당하는 것이 있는지 sb에 contains로 확인

but >> 부분 수열을 가정하고 만들었기 때문에 틀렸음.
1001 이렇게 있어도 11 이렇게만 남을 수 있기 떄문에 1001을 for문으로 붙잡고 포함되었는지를 확인 했어야됐다.

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String number = br.readLine();
        char[] arr = number.toCharArray();
        Deque<Character> deque = new ArrayDeque<>();

        int k = 1;

        for (char a : arr) {
            deque.add(a);
        }

        while (!deque.isEmpty()) {
            check(k, deque);
            k++;
        }

        System.out.println(k - 1);
    }

    public static void check(int number, Deque<Character> deque) {
        String targetNumber = Integer.toString(number);
        StringBuilder sb = new StringBuilder();

        while (!deque.isEmpty()) {
            Character now = deque.removeFirst();
            sb.append(now);

            if (targetNumber.length() == sb.length()) {
                if (targetNumber.contains(sb)) {
                    return;
                }
                deque.addFirst(now);
                return;
            }
            if (!targetNumber.contains(sb)) {
                deque.addFirst(now);
                return;
            }
        }

        return;
    }
}

  • 다시풀이

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String number = br.readLine();

        int idx = 0;

        //1234
        for (int i = 1; ; i++) {
            String num = Integer.toString(i);

            for (int j = 0; j < num.length(); j++) {
                if (idx < number.length() && num.charAt(j) == number.charAt(idx)) {
                    idx++;
                }
            }
            if (idx >= number.length()) {
                System.out.println(i);
                return;
            }
        }
    }
}
profile
안녕하세요

0개의 댓글