ν‹°μŠ€ν† λ¦¬ λ·°

728x90
λ°˜μ‘ν˜•

문제

 

SW Expert Academy

SW ν”„λ‘œκ·Έλž˜λ° μ—­λŸ‰ 강화에 도움이 λ˜λŠ” λ‹€μ–‘ν•œ ν•™μŠ΅ 컨텐츠λ₯Ό ν™•μΈν•˜μ„Έμš”!

swexpertacademy.com

 

문제 풀이

좜처 : SW Expert Academy

 μœ„μ˜ κ·Έλ¦Όκ³Ό 같이 ν–‰λ ¬μ˜ λͺ¨λ“  합을 κ΅¬ν•˜κ³ , μ΅œλŒ€ 값을 λ°˜ν™˜ν•˜λŠ” λ¬Έμ œμ΄λ‹€. μ΄λŠ” 파이썬의 경우 κ°„λ‹¨ν•˜κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€.

 

trans_array = list(map(list, zip(*array)))

 μœ„μ˜ 행렬을 `numpy`λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ „μΉ˜ν•˜κΈ° μœ„ν•΄μ„œλŠ” μœ„μ™€ 같이 μ „μΉ˜ν•  수 μžˆλ‹€. λ”°λΌμ„œ μ „μΉ˜μ‹œν‚€κ²Œ 되면 행렬을 합을 보닀 νŽΈν•˜κ²Œ ꡬ할 수 μžˆλ‹€.

 

# β†˜ λŒ€κ°μ„ μ˜ ν•©
left_right = sum([array[i][i] for i in range(100)])
# ↙ λŒ€κ°μ„ μ˜ ν•©
right_left = sum([array[i][99 - i] for i in range(100)])

 λŒ€κ°μ„ μ˜ 합은 μ’ŒμΈ‘μ—μ„œ 우츑으둜 λ‚΄λ €μ˜€λŠ” 경우 [0][0], [1][1]κ³Ό 같이 μ ‘κ·Όν•˜λ©΄ λœλ‹€. 이와 달리 μš°μΈ‘μ—μ„œ 쒌츑으둜 λ‚΄λ €μ˜€λŠ” 경우의 λŒ€κ°μ„ μ€ [0][99], [1][98]κ³Ό 같이 μ ‘κ·Όν•˜λ©΄ λœλ‹€.

 

μ½”λ“œ

for test_case in range(1, 11):
    answer = 0
    t = int(input())

    array = [list(map(int, input().split())) for _ in range(100)]
    # ν–‰λ ¬ μ „μΉ˜
    trans_array = list(map(list, zip(*array)))
    # β†˜ λŒ€κ°μ„ μ˜ ν•©
    left_right = sum([array[i][i] for i in range(100)])
    # ↙ λŒ€κ°μ„ μ˜ ν•©
    right_left = sum([array[i][99 - i] for i in range(100)])

    for i in range(100):
        answer = max(answer, max(sum(array[i]), sum(trans_array[i])))

    answer = max(answer, max(left_right, right_left))

    print('#' + str(test_case), answer)

 

728x90
λ°˜μ‘ν˜•

'πŸ‘¨β€πŸ’» μ½”λ”©ν…ŒμŠ€νŠΈ > SWEA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

SWEA: 1221 GNS  (0) 2020.10.07
SWEA: 1220 Magnetic  (0) 2020.10.07
SWEA: 1215 회문1  (0) 2020.10.07
SWEA: 1208 Flatten  (0) 2020.10.07
SWEA: 1206 View  (0) 2020.10.07
λŒ“κΈ€
κΈ€ 보관함
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€