부끄럽게도 정답률이 꽤 높은 문제임에도 불구하고 시간이 꽤 걸렸던 문제이다.
90이라는 max 값을 구하기는 상당히 쉬운데, 행열을 출력하는 부분 때문에 조금 난항을 겪었다.
다음 코드처럼 나는 작성했더니 결과가 잘 나왔다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import sys
arr = []
maxN = [0]
for i in range(9):
arr.append(list(map(int, sys.stdin.readline().split())))
for i in range(9):
for j in range(9):
if max(arr[i]) == arr[i][j] and max(arr[i])>=maxN[0]:
maxN.pop()
maxN.append(arr[i][j])
i_num = i
j_num = j
else:
pass
print(maxN[0])
print(i_num+1, j_num+1)
|
cs |
딱 봐도 자랑스럽게 내세울만한 코드는 아니다... 오히려 지저분한 코드라는 생각이 확실히 들긴 한다.
리스트를 꽤 많이 사용했다.
도저히 어떻게 list에 값을 넣지 않고 처리를 해야 할지 생각이 안 나서 저렇게 maxN처럼 전역변수처럼 리스트를 처리해서 해당 값을 이중 for문 내에 있는 if문의 조건에 따라 업데이트시키는(line 8~) 방법을 사용했다.
그리고 딱 봐도 for문에 이중for문까지 있어서 시간 복잡도가 O(n^2)이 나와서 시간 초과가 될 것 같았다.
그래서 line 4에서와 같이 input()을 사용하지 않고 sys.stdin.readline()를 사용해서 처리했다.
그렇게 처리할 경우, 다음과 같은 실행시간이 나와서 잘 처리가 되었다.
추후에 다시 이 코드로 돌아와서 조금 더 깔끔한 코드를 손봐줄 필요성이 강하게 느껴진다...
'코딩 문제풀이 및 연습 > Python 연습' 카테고리의 다른 글
[백준] 1672_DNA 해독 파이썬 (0) | 2021.09.18 |
---|---|
[백준] 1225_이상한 곱셈 파이썬 (시간초과 문제 해결하기) (0) | 2021.09.18 |
[백준] 15873_공백 없는 A+B 파이썬 (0) | 2021.09.13 |
[백준] 5596_시험 점수 파이썬 (0) | 2021.09.11 |
[백준] 5893_17배 파이썬 (0) | 2021.09.11 |