본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

1209. [S/W 문제해결 기본] 2일차 - Sum (코딩테스트, SW Expert Academy)

by 령과 2022. 4. 28.

문제:

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

나의코드 : 50분

T = 10
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    a = int(input())   
    table = []
    answer = []
    N= 100
    for i in range(N):
        table.append(list(map(int, input().split())))
    row = []
    column = [0]*N
    left, right = 0,0
    count = 0
    for i in table:
        row.append(sum(i))
        column = [a+b for a,b in zip(column,i)]
        #left += i[count]
        #right += i[(N-1)-count]
        count+=1
        
    answer = max(max(row),max(column),left,right)
    print("#"+str(a),answer)

실제로 해결하는데 10분? 정도 걸렸지만 계속 알 수없는 실패로 통과를 못했다.

원인은 테스트케이스가 10개가 고정되고 각 첫번째 케이스마다 input을 받아야 된다는 점을 무시했었다.

평소대로 라면 테스트케이스 갯수를 T로 받았겠지만 T=10으로 고정, 테스트케이스마다 input을 받아야 됬었다.

 

실제 풀이방법은 간단한 노가다 수준이라 의미가 없을 듯하고 전에 해결하려던 8-Queen문제를 해결하는데 도움이 될만한 아이디어가 떠올랐다.

 

퀸이 행, 열로 움직일 뿐만아니라 대각선으로 움직일 수 있었기 때문에 대각선을 구할 방법을 몰랐었다.

위 문제를 풀면서 대각선 전체의 값들을 구해야되나? 라는 생각으로 고민했었는데 아이디어가 떠올랐다.

행, 열값의 덧셈과 뺄셈을 이용하면 해결가능하였다. 위 그림을 보면 이해가 갈 것이다.

두가지 경우를 통해서 문제를 해결 할 수 있지 않을까 싶다. 나중에 시도해봐야지

댓글