๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 1747_์†Œ์ˆ˜&ํŒฐ๋ฆฐ๋“œ๋กฌ

๋ฟŒ์•ผ._. 2022. 4. 25. 15:05

Silver I

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/1747)

<์†Œ์ˆ˜&ํŒฐ๋ฆฐ๋“œ๋กฌ>

๋ฌธ์ œ 

 

์–ด๋–ค ์ˆ˜์™€ ๊ทธ ์ˆ˜์˜ ์ˆซ์ž ์ˆœ์„œ๋ฅผ ๋’ค์ง‘์€ ์ˆ˜๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์ˆ˜๋ฅผ ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ผ ๋ถ€๋ฅธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 79,197๊ณผ 324,423 ๋“ฑ์ด ํŒฐ๋ฆฐ๋“œ๋กฌ ์ˆ˜์ด๋‹ค.
์–ด๋–ค ์ˆ˜ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, N๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , ์†Œ์ˆ˜์ด๋ฉด์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ ์ˆ˜ ์ค‘์—์„œ, ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ

 

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค.

 

 

์ถœ๋ ฅ 

 

์ฒซ์งธ ์ค„์— ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution (Python)

if __name__=='__main__':
    arr=[True]*2000000
    line=int((2000000)*0.5)
    arr[1]=False

    n=int(input())

    for i in range(2, line+1): # ์†Œ์ˆ˜ ํŒ๋ณ„
        if arr[i]==True:
            for j in range(i+i, 2000000, i):
                arr[j]=False

    flag=False
    for i in range(n, 2000000):
        cnt = 0
        if arr[i]==True: # ์†Œ์ˆ˜์ด๋ฉด
            i = str(i)
            for j in range(len(i)//2): # ํŒฐ๋ฆฐ๋“œ๋กฌ
                if i[j]==i[len(i)-1-j]:
                    cnt+=1
                else:
                    break
            if cnt==len(str(i))//2:
                print(i)
                flag=True
                break
        if flag==True:
            break

 

 

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ N๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๋ผ๋ฉด ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ํ™•์ธํ•ด์ค๋‹ˆ๋‹ค.

ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ผ๋ฉด ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ด์ค€ ํ›„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

 

  • N ์ž…๋ ฅ
  • ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ˆ˜ ํŒ๋ณ„
  • N๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’ ์ค‘ ํŒฐ๋ฆฐ๋“œ๋กฌ ํ™•์ธ -> ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ผ๋ฉด ๊ฐ’ ์ถœ๋ ฅ ํ›„ ์ข…๋ฃŒ

 

๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€์ง€๋งŒ ์™œ ์ด๋ ‡๊ฒŒ ๋งŽ์ด ํ‹€๋ ธ๋Š”๊ฐ€?

 

โ“ ํ‹€๋ฆฐ ์ด์œ ๋Š”?

1. N ์ž…๋ ฅ์ด 1000000์ด๋ผ๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ์ถœ๋ ฅ ๊ฐ’์œผ๋กœ๋Š” 1000000 ์ด์ƒ์˜ ๊ฐ’์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฒ˜์Œ์— ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์—์„œ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ”์œ„๋ฅผ 1000000์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ํ‹€๋ ธ๋˜ ๊ฒƒ์ด๋‹ค. 

 

2. ๋ฌธ์ œ์—์„œ 'N๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ '๋ผ๊ณ  ํ•œ ๋ถ€๋ถ„์„ ๋†“์ณค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. N๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ตฌํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์œผ๋ฏ€๋กœ ํ‹€๋ ธ๋˜ ๊ฒƒ์ด๋‹ค.

 

3. 1์„ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋„ฃ์—ˆ์„ ๋•Œ 1์ด ๋‚˜์˜ค๋ฉด ์•ˆ ๋œ๋‹ค. 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 1์„ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ(False) ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

์œ„์™€ ๊ฐ™์ด 3๊ฐœ์˜ ๋ฌธ์ œ์ ์„ ๊ณ ์ณค๋”๋‹ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 


์ƒ๊ฐ๐Ÿค”