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

728x90
λ°˜μ‘ν˜•

문제

 

SW Expert Academy

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

swexpertacademy.com

 

문제 풀이

 λ†μž‘물을 μˆ˜ν™•ν•˜μ—¬ 얻을 수 μžˆλŠ” 이읡이 행열에 μ£Όμ–΄ 질 λ•Œ, λ§ˆλ¦„λͺ¨λ‘œ νƒμƒ‰ν•˜μ—¬ 이읡의 합을 κ΅¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€. λ§ˆλ¦„λͺ¨λ‘œ μ ‘κ·Όν•˜λŠ” 둜직만 μ„€κ³„ν•˜λ©΄ λλ‚˜λŠ” λ¬Έμ œμ΄λ‹€. λ§ˆλ¦„λͺ¨λ₯Ό μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같이 μƒκ°ν•˜λ©΄ λœλ‹€.

 

 μ˜ˆλ₯Ό λ“€μ–΄ 3x3 행렬이라고 ν•˜λ©΄ λ‹€μŒκ³Ό 같이 μ ‘κ·Όν•˜κ²Œ λœλ‹€.

  • (0, 1)
  • (1, 0), (1, 1), (1, 2)
  • (2, 1)

 μ΄μ™€ 같이 μ ‘κ·Όν•˜κ³ μž ν•  λ•Œ `j`의 λ²”μœ„μ— λŒ€ν•œ κ·œμΉ™μ€ `abs(N // 2 - i)`λΆ€ν„° `abs(N - half)`이닀. `half`λŠ” iκ°€ 절반이 되기 μ „κΉŒμ§€λŠ” κ°μ†Œν•˜κ³ , 절반이 된 μ΄ν›„λ‘œλŠ” μ¦κ°€ν•˜μ—¬ λ§ˆλ¦„λͺ¨μ™€ 같은 접근이 κ°€λŠ₯ν•˜λ‹€.

 

μ½”λ“œ

T = int(input())
for test_case in range(1, T + 1):
    answer = 0
    n = int(input())
    farm = [list(map(int, input().strip())) for _ in range(n)]
    half = n // 2

    back = half

    for i in range(n):
        for j in range(abs(half - i), abs(n - back)):
            answer += farm[i][j]

        back = back - 1 if i < half else back + 1
    print('#' + str(test_case), answer)

 

728x90
λ°˜μ‘ν˜•
λŒ“κΈ€
κΈ€ 보관함
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€