λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
πŸ’» Computer Science/- Data Structure, Algorithm

[μ•Œκ³ λ¦¬μ¦˜-PS] λ°±μ€€ 2292번 λ²Œμ§‘ μžλ°” λ¬Έμ œν’€μ΄

by Wonit 2021. 7. 7.

문제

ν•΄λ‹Ή ν¬μŠ€νŒ…μ€ λ°±μ€€μ˜ λ²Œμ§‘ 의 μ ‘κ·Όκ³Ό ν•΄κ²° 방법을 μ„€λͺ…ν•œ κΈ€ μž…λ‹ˆλ‹€.
μ •λ‹΅ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν™•μΈν•˜μ‹œλ €λ©΄ solve url μ—μ„œ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ ‘κ·Όν•΄μ•Ό ν•˜λŠ”μ§€λ₯Ό λ¨Όμ € μƒκ°ν•΄λ³΄μž.

 

문제 μ ‘κ·Ό

 

이번 λ¬Έμ œλŠ” μˆ˜ν•™μ μΈ 접근이 ν•„μš”ν•œ λ¬Έμ œμ΄λ‹€.

 

해결법

 

문제의 핡심은 μ‹œμž‘ μˆ«μžμ—μ„œ λͺ©ν‘œ μˆ«μžκΉŒμ§€ λͺ‡ 개의 수λ₯Ό μ§€λ‚˜λŠλƒμ— κ΄€ν•œ 문제둜, μˆ«μžλ“€μ΄ λ†“μ΄λŠ” νŒμ— λŒ€ν•œ 이해가 있으면 λœλ‹€.

 

λ§Œμ•½ 1μ΄λΌλŠ” 숫자만 μ‘΄μž¬ν•œλ‹€κ³  κ°€μ •ν•΄λ³΄μž

 

그럼 1μ—μ„œ 갈 수 μžˆλŠ” μˆ˜λŠ” 6개 (2, 3, 4, 5, 6, 7) κΉŒμ§€μ΄λ‹€.

 

μ΄μœ λŠ” ν•˜λ‚˜μ˜ μˆ˜κ°€ 놓인 λ„ν˜•μ€ 6κ°ν˜• 이기 λ•Œλ¬Έμ—, ν•œ λ„ν˜•μ— 인접해 μœ„μΉ˜ν•  수 μžˆλŠ” λ„ν˜•μ€ 총 6λ©΄, 6개의 μˆ˜κ°€ 놓일 수 μžˆλ‹€.

 

 

그리고 λ§Œμ•½ 6개의 μˆ˜κ°€ λ‹€ λ†“μ˜€λ‹€κ³  μƒκ°ν•΄λ³΄μž.

 

그럼 또 각각의 면에 놓일 수 μžˆλŠ” μˆ˜λŠ” 12κ°œκ°€ λœλ‹€.

 

 

또 이후에 놓일 수 μžˆλŠ” μˆ˜λŠ”

 

κ·Έ λ‹€μŒμ— 놓일 수 μžˆλŠ” μˆ˜λŠ”?

 

이런 μ‹μœΌλ‘œ 3의 배수둜 μ¦κ°€ν•˜κ²Œ λ˜λŠ” κ·œμΉ™μ„ 찾을 수 μžˆλ‹€.

 

이 κ·œμΉ™μ„ μ΄μš©ν•œλ‹€λ©΄ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλŠ” λ¬Έμ œμ˜€λ‹€.

 

μ •λ‹΅ μ½”λ“œ

import java.io.*;

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

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

        int maxNumber = 1;

        int answer = 1;

        for (int i = 1; i <= 1_000_000_000; i++) {

            if(target == 1) break;

            int boundary = 6 * i;
            maxNumber += boundary;

            answer++;

            if(maxNumber >= target) break;
        }
        bw.write(String.valueOf(answer));
        bw.flush();
        bw.close();
    }
}

μ •λ‹΅ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν™•μΈν•˜μ‹œλ €λ©΄ solve url μ—μ„œ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λŒ“κΈ€