1436번: 영화감독 숌 (acmicpc.net)

처음 문제 접근

  • 15면 15666인데 16이면 16660이라고??
  • 이를 어떻게 구현하지??
  • for 문을 n까지 돌리면서... 6이 나오면.. 자릿수를 바꾸고 거기서 다시 1을 더하는건가..

정답보고 문제 이해

  1. 666을 저장하는 변수를 하나 만들고
  2. 1씩 더하면서 666을 포함하면 count + 1 
  3. count가 N과 같아지면 break

나는 15666 을 어떻게 한 번에 16660 을 만드나를 해서 막혔는데..

그냥 브루트포스로 15667, 15668,..., 16659,16660 이 때 + 1

이런식으로 하는거였구나...

한 번에 하지 말고 브루트 포스 방법을 잘 익혀야겠다고 느꼈다..

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());

		int count = 1;
		int number = 666;
		while (count != N) {
			number += 1;
			if (String.valueOf(number).contains("666")) {
				count += 1;
			}
		}
		System.out.println(number);
	}

}