[๋ฌธ์ ๋งํฌ] ๐
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
์ค๋ช
N ๊ฐ์ ์ซ์๋ก ๊ตฌ์ฑ๋ ์ซ์์ด Ai (i=1~N) ์ M ๊ฐ์ ์ซ์๋ก ๊ตฌ์ฑ๋ ์ซ์์ด Bj (j=1~M) ๊ฐ ์๋ค. ์๋๋ N =3 ์ธ Ai ์ M = 5 ์ธ Bj ์ ์์ด๋ค.

Ai ๋ Bj ๋ฅผ ์์ ๋กญ๊ฒ ์์ง์ฌ์ ์ซ์๋ค์ด ์๋ก ๋ง์ฃผ๋ณด๋ ์์น๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ๋จ, ๋ ๊ธด ์ชฝ์ ์๋์ ๋ฒ์ด๋์๋ ์ ๋๋ค.

์๋ก ๋ง์ฃผ๋ณด๋ ์ซ์๋ค์ ๊ณฑํ ๋ค ๋ชจ๋ ๋ํ ๋ ์ต๋๊ฐ์ ๊ตฌํ๋ผ. ์ ์์ ์ ์ ๋ต์ ์๋์ ๊ฐ์ด 30 ์ด ๋๋ค.

[์ ์ฝ ์ฌํญ]
N ๊ณผ M์ 3 ์ด์ 20 ์ดํ์ด๋ค.
ํ์ด
๋ฆฌ์คํธ ์ค ๊ธธ์ด๊ฐ ์งง์ ๊ฒ๊ณผ ๊ธด ๊ฒ์ ๊ตฌ๋ถ
min_list = min(aList, bList, key=len)
max_list = max(aList, bList, key=len)
- key = len์ ๋น๊ตํ ๋ ๊ฐ ๋ฆฌ์คํธ์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ๋๋ก ์ง์ ํ๋ค.
์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ํ์ธ
while cnt <= len(max_list) - len(min_list):
sum = 0
for i in range(len(min_list)):
sum += min_list[i] * max_list[i + cnt] #๊ณฑํ ๋ค ํฉ๊ณ
max_sum = max(max_sum, sum) #์ต๋๊ฐ ์ ์ฅ
cnt += 1
- b๋ฆฌ์คํธ์ ๋ง์ง๋ง ์ธ๋ฑ์ค๊น์ง ํ์ธํ๊ณ ์ ํ ๋,
- cnt๊ฐ ํ์ฌ 2์ด๊ณ , i๊ฐ 2์ผ ๋
- i + cnt, ์ฆ 2 + 2 = 4๊ฐ ๋๋ฏ๋ก ๋ง์ง๋ง ์ธ๋ฑ์ค๊น์ง ๊ณ์ฐํ ์ ์๋ค.
cnt๊ฐ 0์ผ ๋

cnt๊ฐ 1์ผ ๋

- max_sum์๋ ๊ณฑํด์ ๋ํ ๋์ ํฉ๊ณผ ํ์ฌ ์ต๋๊ฐ์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ ์ ์ฅํ๋ค.
- ๊ทธ๋ฆฌ๊ณ cnt๋ฅผ ์ฆ๊ฐํ๋ค. cnt๊ฐ b์์ a๋ฅผ ๋บ ๊ฐ๊ณผ ๊ฐ์์ง ๋๊น์ง๋ง ๋ฐ๋ณตํ๋ค.
Solution
test_case = int(input())
for tc in range(1, test_case + 1):
a, b = map(int, input().split())
aList = list(map(int, input().split()))
bList = list(map(int, input().split()))
min_list = min(aList, bList, key=len)
max_list = max(aList, bList, key=len)
max_sum = 0
cnt = 0
while cnt <= len(max_list) - len(min_list):
sum = 0
for i in range(len(min_list)):
sum += min_list[i] * max_list[i + cnt] #๊ณฑํ ๋ค ํฉ๊ณ
max_sum = max(max_sum, sum) #์ต๋๊ฐ ์ ์ฅ
cnt += 1
print("#%d %d" %(tc, max_sum))
๐ฉ๐ป ํ๊ณ
max์ min์ ์ธ ๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๊ธฐ์ ๋ถ์ ์ ํ๋ค. min()๊ณผ max()๋ ๋ฆฌ์คํธ์ ๊ฐ์ ๋น๊ตํ๋ ๋ฐ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๊ฒ๋ ๋ชจ๋ฅด๊ณ ๊ทธ๋ฅ ์ผ๋ค๊ฐ ์ฒ์ ์ ์ถ ๋ ์คํจํ๋ค. min() ๋ฉ์๋์ ๋ฆฌ์คํธ๋ง ๋๊ธฐ๋ฉด ๊ทธ๋ฅ ๊ธธ์ด ์๊ด์์ด ๋ฐํ๋๋ค. ๋ฌด์จ ๊ธฐ์ค์ผ๋ก ๋ฐํ๋๋ ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋ค.
๋ฆฌ์คํธ ์์์ ๊ธธ์ด๋ก ํ๋ณํ๊ณ ์ถ์ผ๋ฉด key=len์ ์ธ์๋ก ๋๊ธฐ๋ฉด ๋๋ค.
'๐งฉ Algorithm > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SWEA] 1288. ์๋ก์ด ๋ถ๋ฉด์ฆ ์น๋ฃ๋ฒ (Python/D2) (1) | 2024.10.19 |
|---|---|
| [SWEA] 1948. ๋ ์ง ๊ณ์ฐ๊ธฐ (Python/D2) (0) | 2024.10.18 |
| [SWEA] 1961. ์ซ์ ๋ฐฐ์ด ํ์ (Python/D2) (1) | 2024.10.18 |
| [SWEA] 1976. ์๊ฐ ๋ง์ (Python/D2) (0) | 2024.10.16 |
| [SWEA] 1284. ์๋ ์๊ธ ๊ฒฝ์ (Python/D2) (4) | 2024.10.16 |