์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์น๊ฐ๋ฐ๊ธฐ๋ก
- ์ปด๊ณต์
- spring
- ๋ฐฑ์คํ์ด
- ์ปดํจํฐ๊ณตํ
- ChatGPT
- ์ดํญ๊ณ์
- ๋ฆฌ์กํธ๋ค์ดํฐ๋ธ
- ์คํ๋ง
- ๋ฐฑ์ค
- ์ฐ์ ์์ํ
- ํ์ด์ฌ
- ๋ฐฑ์ค1436
- ๋ฆฌ์กํธ
- ๊ทธ๋ฆฌ๋
- ํ๋ก ํธ์ค๋
- ๋ฐฑ์๋
- ๋ชจ๋ฐ์ผ์ฑํ๋ก๊ทธ๋๋ฐ
- ์ฝ๋ฉํ ์คํธ
- boj11653
- ์น๊ฐ๋ฐ
- ์๊ณ ๋ฆฌ์ฆ
- ์ปด๊ณต
- ๊ฐ๋ฐ์
- ์๋ฃ๊ตฌ์กฐ
- SSE
- ๋จ์ํ ์คํธ
- ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉ
- ํ๋ก๊ทธ๋๋ฐ
- Today
- Total
๐ป๐ญ๐ง๐
BOJ 1041 : ์ฃผ์ฌ์ (Python) ๋ณธ๋ฌธ
๋ฌธ์
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๋ฉด ์กฐํฉ์ ์ต์๊ฐ์ด ๋๋ค.
์ด๋ ๊ฒ ๊ตฌํ ์ต์๊ฐ์ ์์ ์์ ๋์ ํ๋ฉด ๋ต์ด ๋์จ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ 1092 : ๋ฐฐ (Python) (0) | 2023.02.20 |
---|---|
BOJ 1715 : ์นด๋ ์ ๋ ฌํ๊ธฐ (Python) (0) | 2023.02.19 |
BOJ 11000 : ๊ฐ์์ค ๋ฐฐ์ (Python) (0) | 2023.02.15 |
BOJ 1461 : ๋์๊ด (Python) (4) | 2023.02.15 |
BOJ 9251 : LCS (Python) (0) | 2023.02.07 |