๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ’ป๐Ÿ’ญ๐ŸŽง๐ŸŒ

BOJ 1041 : ์ฃผ์‚ฌ์œ„ (Python) ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ ํ’€์ด

BOJ 1041 : ์ฃผ์‚ฌ์œ„ (Python)

adorableco 2023. 2. 15. 21:18
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

https://www.acmicpc.net/problem/1041

 

1041๋ฒˆ: ์ฃผ์‚ฌ์œ„

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ์ฃผ์‚ฌ์œ„์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ A, B, C, D, E, F์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. N์€ 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜

www.acmicpc.net

 

 

์ฝ”๋“œ

import sys
N = int(sys.stdin.readline())

array = list(map(int, sys.stdin.readline().split()))

one = min(array)

two = 100 # 50 * 2 = ๋‘ ๋ฉด์˜ ์ตœ๋Œ€ ํ•ฉ 
three = 150 # 50 * 3 = ์„ธ ๋ฉด์˜ ์ตœ๋Œ€ ํ•ฉ

if N == 1: # N==1์ด๋ผ๋ฉด ์ด ์ฃผ์‚ฌ์œ„ ์ˆซ์ž ํ•ฉ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋บ€๋‹ค.
    print(sum(array)-max(array))
    
else: # N>=2 ์ผ ๋•Œ
    for i in range(6):
        three_list = []
        two_list = []
        for j in range(6):
            if i+j!=5 and i!=j:
                two_list.append([array[i]+array[j],j])
        two_list.sort()
        if two > two_list[0][0]:
            two = two_list[0][0]
        for q in range(6):
            for j in range(len(two_list)):
                if i+q!=5 and two_list[j][1]+q!=5 and i!=q and two_list[j][1]!=q:
                    three_list.append(two_list[j][0]+array[q])
        three_list.sort()
        if three > three_list[0]:
            three = three_list[0]

    print((three*4) + (two*(8*N - 12)) + (one*5*((N-2)**2)) +(one * 4* (N-2)))

 

 

ํ’€์ด

๋ณด์ด๋Š” 5๊ฐœ์˜ ๋ฉด์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜์˜ ํ•ฉ์˜ ์ตœ์†Ÿ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ตœ์ƒ๋‹จ ๋ฉด์˜ 4๊ฐœ์˜ ๊ผญ์ง“์ ์— ์œ„์น˜ํ•˜๋Š” 3๋ฉด์„ ๋“œ๋Ÿฌ๋‚ด๋Š” ์ฃผ์‚ฌ์œ„๋“ค
  • ์ตœํ•˜๋‹จ ๋ฉด์˜ 4๊ฐœ์˜ ๊ผญ์ง“์ ์— ์œ„์น˜ํ•˜๋Š” 2๋ฉด์„ ๋“œ๋Ÿฌ๋‚ด๋Š” ์ฃผ์‚ฌ์œ„๋“ค
  • ๋ฐ”๋‹ฅ์— ๋ถ™์–ด์žˆ๋Š” 4๊ฐœ์˜ ๋ณ€๋“ค์„ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ 8๊ฐœ์˜ ๋ณ€์— ๊ฐ๊ฐ ์œ„์น˜ํ•˜์—ฌ 2๋ฉด์„ ๋“œ๋Ÿฌ๋‚ด๋Š” (N-2)๊ฐœ์˜ ์ฃผ์‚ฌ์œ„๋“ค → ๊ผญ์ง“์ ์— ์œ„์น˜ํ•˜๋Š” ์ฃผ์‚ฌ์œ„ 2๊ฐœ๋Š” ์ œ์™ธ
  • ๋ฐ”๋‹ฅ์— ๋ถ™์–ด์žˆ๋Š” ๋ฉด์„ ์ œ์™ธํ•˜๊ณ  5๊ฐœ์˜ ๋ฉด์—์„œ, ๋ฉด์˜ ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‚ด๋ถ€์— ์œ„์น˜ํ•˜์—ฌ 1๋ฉด์„ ๋“œ๋Ÿฌ๋‚ด๋Š” ์ฃผ์‚ฌ์œ„๋“ค 

๋ชจ๋‘ ๋‹ค ํ•ฉ์ณ์„œ ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด 

 

(3๋ฉด * 4) + (2๋ฉด * 4) + (2๋ฉด * 8 * (N-2)) + (1๋ฉด * 5 * (N-2)**2) 

 

์ด์ œ ์ตœ์†Œ๊ฐ€ ๋˜๋Š” 3๋ฉด ์กฐํ•ฉ, ์ตœ์†Œ๊ฐ€ ๋˜๋Š” 2๋ฉด ์กฐํ•ฉ์„ ๊ตฌํ•ด์„œ ๋Œ€์ž…๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. → 1๋ฉด์€ ์ฃผ์‚ฌ์œ„ ์ˆซ์ž ์ค‘ ์ตœ์†Ÿ๊ฐ’์— ํ•ด๋‹นํ•จ.

 

 

์•„๋ž˜๋Š” 2๋ฉด ์กฐํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

for j in range(6):
            if i+j!=5 and i!=j:
                two_list.append([array[i]+array[j],j])

2๋ฉด ์กฐํ•ฉ, 3๋ฉด ์กฐํ•ฉ์€ ๋งˆ์ฃผ ๋ณด๊ณ  ์žˆ๋Š” ๋ฉด๊ณผ ์กฐํ•ฉ๋  ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ํ•ฉ์นœ ๊ฐ’์ด 5๊ฐ€ ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๋˜ํ•œ ๋ฉด์ด ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋˜๋ฏ€๋กœ ๊ฐ™์€ ๋ฉด์ด ์•„๋‹Œ์ง€๋„ ํ™•์ธํ•œ๋‹ค.

 

๋ชจ๋‘ ํ•ด๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด two_list(2๋ฉด ์กฐํ•ฉ)์— 0์—ด์—๋Š” ๋‘ ๋ฉด์˜ ์ˆซ์ž๋ฅผ ํ•ฉ์นœ ๊ฐ’์„, 1์—ด์—๋Š” ๋‘๋ฒˆ์งธ ๋ฉด์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.  → 3๋ฉด ์กฐํ•ฉ์„ ๋งŒ๋“ค ๋•Œ ๋งˆ์ฃผ๋ณด๊ณ  ์žˆ์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ธ๋ฑ์Šค ๊ฐ’์ž„

 

    +---+        
    | D |        
+---+---+---+---+
| E | A | B | F |
+---+---+---+---+
    | C |        
    +---+   

A B C D E F ๋Š” ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ 0, 1, 2, 3, 4, 5 ์ด๊ณ  {A-F}, {B-E}, {C-D} ๋Š” ๋งˆ์ฃผ๋ณด๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ œ์™ธํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ฅผ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋กœ ๋ฐ”๊พธ๋ฉด {0-5}, {1-4}, {2-3} ์ด๋ฏ€๋กœ i+j!=5 ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

์•„๋ž˜๋Š” 3๋ฉด ์กฐํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. 

for q in range(6):
            for j in range(len(two_list)):
                if i+q!=5 and two_list[j][1]+q!=5 and i!=q and two_list[j][1]!=q:
                    three_list.append(two_list[j][0]+array[q])

์œ„์—์„œ ๊ตฌํ•œ two_list (2๋ฉด ์กฐํ•ฉ) ๋ฅผ ์ด์šฉํ•ด์„œ ์ด๋ฏธ ์กฐํ•ฉ๋œ 2๋ฉด๊ณผ ๋ชจ๋‘ ๋งˆ์ฃผ๋ณด๊ณ  ์žˆ์ง€ ์•Š์€ ๋ฉด์„ ์ถ”๊ฐ€ํ•˜์—ฌ 3๋ฉด ์กฐํ•ฉ์„ ๋งŒ๋“ ๋‹ค. 

 

two_list (2๋ฉด ์กฐํ•ฉ) ๊ณผ three_list(3๋ฉด ์กฐํ•ฉ) ๋‘˜ ๋‹ค ์กฐํ•ฉ์„ ๋ชจ๋‘ ๊ตฌํ•œ ๋’ค์— ์ •๋ ฌ์„ ํ•˜๋ฉด ๊ฐ€์žฅ ์ขŒ์ธก์˜ ๊ฐ’์ด ์ตœ์†Œ๊ฐ€ ๋˜๋Š” 2๋ฉด ์กฐํ•ฉ์˜ ์ตœ์†Ÿ๊ฐ’, ์ตœ์†Œ๊ฐ€ ๋˜๋Š” 3๋ฉด ์กฐํ•ฉ์˜ ์ตœ์†Ÿ๊ฐ’์ด ๋œ๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ๊ตฌํ•œ ์ตœ์†Ÿ๊ฐ’์„ ์œ„์˜ ์‹์— ๋Œ€์ž…ํ•˜๋ฉด ๋‹ต์ด ๋‚˜์˜จ๋‹ค.

 

๋ฐ˜์‘ํ˜•