λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ•Œκ³ λ¦¬μ¦˜

[Java] BOJ 1436 μ˜ν™”κ°λ… 숌

by 🍊귀🍊 2024. 7. 14.

문제 

문제 링크 https://www.acmicpc.net/problem/1436

  • 제일 μž‘μ€ μ’…λ§μ˜ μˆ˜λŠ” 666이고, κ·Έ λ‹€μŒμœΌλ‘œ 큰 μˆ˜λŠ” 1666, 2666, 3666, .... 이닀.
  • λ”°λΌμ„œ, μˆŒμ€ 첫 번째 μ˜ν™”μ˜ 제λͺ©μ€ "μ„Έμƒμ˜ 쒅말 666", 두 번째 μ˜ν™”μ˜ 제λͺ©μ€ "μ„Έμƒμ˜ 쒅말 1666"와 같이 이름을 지을 것이닀.
  • μΌλ°˜ν™”ν•΄μ„œ μƒκ°ν•˜λ©΄, N번째 μ˜ν™”μ˜ 제λͺ©μ€ μ„Έμƒμ˜ 쒅말 (N번째둜 μž‘μ€ μ’…λ§μ˜ 수) 와 κ°™λ‹€.
  • 숌이 λ§Œλ“  N번째 μ˜ν™”μ˜ 제λͺ©μ— λ“€μ–΄κ°„ 수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μˆŒμ€ 이 μ‹œλ¦¬μ¦ˆλ₯Ό 항상 μ°¨λ‘€λŒ€λ‘œ λ§Œλ“€κ³ , λ‹€λ₯Έ μ˜ν™”λŠ” λ§Œλ“€μ§€ μ•ŠλŠ”λ‹€.
  • 첫째 쀄에 N이 주어진닀. N은 10,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.
  • 첫째 쀄에 N번째 μ˜ν™”μ˜ 제λͺ©μ— λ“€μ–΄κ°„ 수λ₯Ό 좜λ ₯ν•œλ‹€.

아이디어

  • 첫 수인 666λΆ€ν„° Integer μ΅œλŒ“κ°’κΉŒμ§€ λ°˜λ³΅λ¬Έμ„ λŒλ €μ„œ μˆ«μžμ•ˆμ— "666"이 μžˆλŠ”μ§€ νŒλ³„ ν›„, 카운트λ₯Ό ν–ˆλ‹€.
  • 카운트 ν•œ μˆ˜κ°€ κ΅¬ν•΄μ•Όλ˜λŠ” Nλ²ˆμ§Έμ™€ μˆ«μžκ°€ κ°™λ‹€λ©΄ κ·Έ 수λ₯Ό 좜λ ₯ν–ˆλ‹€. 

κ²ͺ은 μ‹œν–‰μ°©μ˜€

  • X

사싀 λ°˜λ³΅λ¬Έμ„ λŒλ¦¬λ©΄μ„œλ„ μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚˜μ§„ μ•Šμ„κΉŒ 걱정을 많이 ν–ˆλ‹€.. γ…œ

μ½”λ“œ

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

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

        int N = Integer.parseInt(br.readLine());

        // λͺ‡λ²ˆμ§ΈμΈμ§€ μ„ΈλŠ” λ³€μˆ˜
        int cnt = 0;
        int result = 0;

        // 첫번째 수인 666λΆ€ν„° Integer μ΅œλŒ€κ°’κΉŒμ§€ λ°˜λ³΅λ¬Έμ„ 돌림
        for(int i = 666; i < Integer.MAX_VALUE; i++){
            // i번째수λ₯Ό string으둜 λ°”κΏ”μ€Œ
            String s = i + "";

            // String으둜 λ³€ν™˜λœ λ¬Έμžμ—΄μ— "666"이 ν¬ν•¨λ˜μ–΄ μžˆλ‹€λ©΄
            // cnt + 1
            if(s.contains("666")){
                cnt = cnt + 1;
            }

            // λ§Œμ•½ 카운트 된 νšŸμˆ˜μ™€ κ΅¬ν•΄μ•Όλ˜λŠ” μˆœμ„œμ™€ κ°™λ‹€λ©΄
            if(cnt == N){
                // 결과값에 iκ°’ μ €μž₯ ν›„, 반볡문 μ’…λ£Œ
                result = i;
                break;
            }
        }

        System.out.println(result);
    }
}