Post

🧩 Baekjoon 1436 - μ˜ν™”κ°λ… 숌

🧩 Baekjoon 1436 - μ˜ν™”κ°λ… 숌

문제

666은 쒅말을 λ‚˜νƒ€λ‚΄λŠ” 수라고 ν•œλ‹€. λ”°λΌμ„œ, λ§Žμ€ λΈ”λ‘λ²„μŠ€ν„° μ˜ν™”μ—μ„œλŠ” 666이 λ“€μ–΄κ°„ 제λͺ©μ„ 많이 μ‚¬μš©ν•œλ‹€. μ˜ν™”κ°λ… μˆŒμ€ μ„Έμƒμ˜ 쒅말 μ΄λΌλŠ” μ‹œλ¦¬μ¦ˆ μ˜ν™”μ˜ 감독이닀. μ‘°μ§€ λ£¨μΉ΄μŠ€λŠ” μŠ€νƒ€μ›Œμ¦ˆλ₯Ό λ§Œλ“€ λ•Œ, μŠ€νƒ€μ›Œμ¦ˆ 1, μŠ€νƒ€μ›Œμ¦ˆ 2, μŠ€νƒ€μ›Œμ¦ˆ 3, μŠ€νƒ€μ›Œμ¦ˆ 4, μŠ€νƒ€μ›Œμ¦ˆ 5, μŠ€νƒ€μ›Œμ¦ˆ 6κ³Ό 같이 이름을 μ§€μ—ˆκ³ , ν”Όν„° μž­μŠ¨μ€ λ°˜μ§€μ˜ μ œμ™•μ„ λ§Œλ“€ λ•Œ, λ°˜μ§€μ˜ μ œμ™• 1, λ°˜μ§€μ˜ μ œμ™• 2, λ°˜μ§€μ˜ μ œμ™• 3κ³Ό 같이 μ˜ν™” 제λͺ©μ„ μ§€μ—ˆλ‹€. ν•˜μ§€λ§Œ μˆŒμ€ μžμ‹ μ΄ μ‘°μ§€ λ£¨μΉ΄μŠ€μ™€ ν”Όν„° μž­μŠ¨μ„ λ›°μ–΄λ„˜λŠ”λ‹€λŠ” 것을 보여주기 μœ„ν•΄μ„œ μ˜ν™” 제λͺ©μ„ μ’€ λ‹€λ₯΄κ²Œ λ§Œλ“€κΈ°λ‘œ ν–ˆλ‹€.

μ’…λ§μ˜ μˆ˜λž€ μ–΄λ–€ μˆ˜μ— 6이 적어도 3개 이상 μ—°μ†μœΌλ‘œ λ“€μ–΄κ°€λŠ” 수λ₯Ό λ§ν•œλ‹€. 제일 μž‘μ€ μ’…λ§μ˜ μˆ˜λŠ” 666이고, κ·Έ λ‹€μŒμœΌλ‘œ 큰 μˆ˜λŠ” 1666, 2666, 3666, …. 이닀. λ”°λΌμ„œ, μˆŒμ€ 첫 번째 μ˜ν™”μ˜ 제λͺ©μ€ β€œμ„Έμƒμ˜ 쒅말 666”, 두 번째 μ˜ν™”μ˜ 제λͺ©μ€ β€œμ„Έμƒμ˜ 쒅말 1666”와 같이 이름을 지을 것이닀. μΌλ°˜ν™”ν•΄μ„œ μƒκ°ν•˜λ©΄, N번째 μ˜ν™”μ˜ 제λͺ©μ€ μ„Έμƒμ˜ 쒅말 (N번째둜 μž‘μ€ μ’…λ§μ˜ 수) 와 κ°™λ‹€.

숌이 λ§Œλ“  N번째 μ˜ν™”μ˜ 제λͺ©μ— λ“€μ–΄κ°„ 수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μˆŒμ€ 이 μ‹œλ¦¬μ¦ˆλ₯Ό 항상 μ°¨λ‘€λŒ€λ‘œ λ§Œλ“€κ³ , λ‹€λ₯Έ μ˜ν™”λŠ” λ§Œλ“€μ§€ μ•ŠλŠ”λ‹€.

μž…λ ₯

첫째 쀄에 N이 μ£Όμ–΄μ§„λ‹€. N은 10,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.

좜λ ₯

첫째 쀄에 N번째 μ˜ν™”μ˜ 제λͺ©μ— λ“€μ–΄κ°„ 수λ₯Ό 좜λ ₯ν•œλ‹€.

예제

βœ… μž…λ ₯ 1

1
2

βœ… 좜λ ₯ 1

1
1666

βœ… μž…λ ₯ 2

1
3

βœ… 좜λ ₯ 2

1
2666

βœ… μž…λ ₯ 3

1
500

βœ… 좜λ ₯ 3

1
166699

μž‘μ„± μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
  
public class Main {  
    public static void main(String[] args) throws IOException {  
        // 1. λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        int n = Integer.parseInt(br.readLine());  
        int i = 0;  
        int count = 0;  
        
        // 2. 브루트포슀 처리  
        while (count < n) {  
            if (String.valueOf(++i).contains("666")) count++;  
        }  
        
        // 3. 좜λ ₯  
        System.out.println(i);  
    }  
}
  • "666" νŒ¨ν„΄μ„ μ°ΎλŠ” 방식을 λ‹¬λ¦¬ν•˜λ©΄ 쑰금 더 효율적으둜 κ΅¬ν˜„ν•  수 μžˆμ„ 것 κ°™λ‹€.
This post is licensed under CC BY 4.0 by the author.