๐ช [์ผ๊ณฑ๋์์ด]
2309๋ฒ: ์ผ๊ณฑ ๋์์ด
์ํ ๊ฐ์ ์ค์ ๊ฑธ์ณ ๋์์ด๋ค์ ํค๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ํค๋ 100์ ๋์ง ์๋ ์์ฐ์์ด๋ฉฐ, ์ํ ๋์์ด์ ํค๋ ๋ชจ๋ ๋ค๋ฅด๋ฉฐ, ๊ฐ๋ฅํ ์ ๋ต์ด ์ฌ๋ฌ ๊ฐ์ง์ธ ๊ฒฝ์ฐ์๋ ์๋ฌด๊ฑฐ๋ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
๐ ๋ฌธ์ ์ค๋ช
์๋น๋ฅผ ํผํด ์ผ๊ณฑ ๋์์ด๋ค๊ณผ ํจ๊ป ํํ๋กญ๊ฒ ์ํํ๊ณ ์๋ ๋ฐฑ์ค๊ณต์ฃผ์๊ฒ ์๊ธฐ๊ฐ ์ฐพ์์๋ค.
์ผ๊ณผ๋ฅผ ๋ง์น๊ณ ๋์์จ ๋์์ด๊ฐ ์ผ๊ณฑ ๋ช ์ด ์๋ ์ํ ๋ช ์ด์๋ ๊ฒ์ด๋ค.
์ํ ๋ช ์ ๋์์ด๋ ๋ชจ๋ ์์ ์ด "๋ฐฑ์ค ๊ณต์ฃผ์ ์ผ๊ณฑ ๋์์ด"์ ์ฃผ์ธ๊ณต์ด๋ผ๊ณ ์ฃผ์ฅํ๋ค.
๋ฐ์ด๋ ์ํ์ ์ง๊ด๋ ฅ์ ๊ฐ์ง๊ณ ์๋ ๋ฐฑ์ค๊ณต์ฃผ๋, ๋คํ์ค๋ฝ๊ฒ๋ ์ผ๊ณฑ ๋์์ด์ ํค์ ํฉ์ด 100์ด ๋จ์ ๊ธฐ์ตํด ๋๋ค.
์ํ ๋์์ด์ ํค๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฐฑ์ค๊ณต์ฃผ๋ฅผ ๋์ ์ผ๊ณฑ ๋์์ด๋ฅผ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐๐จ ์ ์ถ๋ ฅ ๋ฐ์ดํฐ
[์ ๋ ฅ]
์ํ ๊ฐ์ ์ค์ ๊ฑธ์ณ ๋์์ด๋ค์ ํค๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ํค๋ 100์ ๋์ง ์๋ ์์ฐ์์ด๋ฉฐ,
์ํ ๋์์ด์ ํค๋ ๋ชจ๋ ๋ค๋ฅด๊ณ , ๊ฐ๋ฅํ ์ ๋ต์ด ์ฌ๋ฌ ๊ฐ์ง์ธ ๊ฒฝ์ฐ์๋ ์๋ฌด๊ฑฐ๋ ์ถ๋ ฅํ๋ค.
20
7
23
19
10
15
25
8
13
[์ถ๋ ฅ]
์ผ๊ณฑ ๋์์ด์ ํค๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค. ์ผ๊ณฑ ๋์์ด๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
7
8
10
13
19
20
23
๐ ๋ฌธ์ ํ์ด
ํด๋น ๋ฌธ์ ์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํ ์ ์๋ค.
๋ฐฉ๋ฒ 1. ๋์์ด 9๋ช ์ค 7๋ช ์ ๋ฝ์ ๊ทธ๋ค์ ํค์ ํฉ์ด 100์ด ๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ค.
๋ฐฉ๋ฒ 2. ๋์์ด 9๋ช ์ค 2๋ช ์ ๋ฝ์ ๊ทธ๋ค์ ํค์ ํฉ์ ์ ์ฒด ํค์ ํฉ์์ ๋บ์ ๋ ํฉ์ด 100์ด ๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ค.
๐ ์ํ์ ๊ด์ ์์ ๋ฐฉ๋ฒ 1๊ณผ ๋ฐฉ๋ฒ 2๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์ผํ๋ค. ์กฐํฉ์์ 9C7 = 9C2์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ํ๋ ์ฝ๋์ ๊ด์ ์์ ๋ฐฉ๋ฒ 1๊ณผ ๋ฐฉ๋ฒ 2๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์ผํ์ง ์๋ค.
๋ฐฉ๋ฒ 1์ ๊ฒฝ์ฐ 9๋ช ์ค 7๋ช ์ ๋ฝ๋ ๊ฒฝ์ฐ์ ์๋ O(N^2), ๋ฝ์ ์ด๋ค์ ํฉ์ ๊ตฌํ๋ ๊ฒ์ O(N)์ผ๋ก ์ต์ข O(N^3).
๋ฐฉ๋ฒ 2์ ๊ฒฝ์ฐ 9๋ช
์ค 2๋ช
์ ๋ฝ๋ ๊ฒฝ์ฐ์ ์๋ O(N^2)์ธ๋ฐ ๋์์ด์ ํค์ ๊ฒฝ์ฐ ๊ณ ์ ๋ ์์ ๊ฐ์ด๊ธฐ์ ๋ฏธ๋ฆฌ ๊ตฌํ
์๋ค. ๋ฐ๋ผ์ ์ ์ฒด ํค์์ ๋ฝ์ ๋๋ช
์ ํค๋ฅผ ๋นผ๋ ๊ฒ์ ๋จ์ ์ฐ์ฐ์ด๋ฏ๋ก O(1)์ด ๋์ด ์ต์ข
O๋ O(N^2)์ด๋ค.
๋ฐ๋ผ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋๋ผ๋ ๋ ์๊ฐ๋ณต์ก๋ ์ธก๋ฉด์์ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ 2๋ก ํธ๋ ๊ฒ์ด ์ ํฉํ๋ค.
dwarf_num = 9
dwarfs = [int(input()) for _ in range(dwarf_num)] #๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
total_heights = sum(dwarfs)
for i in range(dwarf_num - 1):
for j in range(i + 1, dwarf_num):
two_heights = dwarfs[i] + dwarfs[j]
if total_heights - two_heights == 100:
first_dw, second_dw = dwarfs[i], dwarfs[j] #์ ๊ฑฐ๋ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๊ฐ ๋ฐ๋๊ธฐ์ ๋ณ์์ ๊ฐ ๋ฏธ๋ฆฌ ๋ด๊ธฐ.
dwarfs.remove(first_dw)
dwarfs.remove(second_dw)
dwarfs.sort()
print(*dwarfs, sep="\n")
break
if len(dwarfs) < 9:
break
๐ ํ์ด/๊ฐ๋ ์ ๋ฆฌ
- ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
: ๋ฆฌ์คํธ + for๋ฌธ + input ์ถ์ฝ ๊ฐ๋ฅ
: Ex. dwarfs = [int(input()) for _ in range(dwarf_num)] - ๋ฆฌ์คํธ์์ ์ฌ๋ฌ ๊ฐ๋ค์ ์ ๊ฑฐ ํ์ ๋ฆฌ์คํธ ์ถ๋ ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ
→ ํ๋์ ๊ฐ์ ์ ๊ฑฐํ ๊ฒฝ์ฐ ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค๊ฐ ่ฎ. ๋ฐ๋ผ์ ๋ณ์์ ๋ด๋ ๊ฒ์ ๊ถ์ฅ.
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ฐฑ์ค] 1476. ๋ ์ง ๊ณ์ฐ (0) | 2022.03.01 |
|---|---|
| [๋ฐฑ์ค] 3085. ์ฌํ ๊ฒ์ (0) | 2022.02.23 |
| [๊ธฐ์ด] 08. ๊ธฐ๋ณธ ์ํ 1 (์์ฑ ไธญ) (0) | 2022.02.22 |
| [๊ธฐ์ด] 06. ํจ์ (0) | 2022.02.21 |
| [๊ธฐ์ด] 05. 1์ฐจ์ ๋ฐฐ์ด (0) | 2022.02.07 |