https://swexpertacademy.com/main/main.do
이 문제는 3번의 실패 끝에 성공했다.
이것도 모범답안 없이 혼자 풀었다.
sum을 이용해 합이 45가 되는지 안 되는지로 풀고 싶었지만 예외가 있을 것 같아 하나하나 확인해보는 방법으로 했다.
댓글을 보니 어떤 분께서 합은 45가 되지만 문제 조건에 맞지 않는 예시를 찾으셨다.
그것도 진짜 쉬운 일 아닌데.. 대단하시다는 생각이 든다.
내 코드는 다음과 같다.
- 56,924kb메모리
- 137ms실행시간
T = int(input())
for t in range(1,T+1):
bool_lst_wd = []
bool_lst_lg = []
bool_lst_sq = []
sdk = []
for i in range(9):
sdk.append(list(map(int,input().split())))
for i in range(9):
if set(sdk[i]) == {1,2,3,4,5,6,7,8,9}:
bool_lst_wd.append(True)
else:
bool_lst_wd.append(False)
lengt = []
for i in range(9):
lengt.append({sdk[j][i] for j in range(9)})
for i in range(9):
if set(lengt[i]) == {1,2,3,4,5,6,7,8,9}:
bool_lst_lg.append(True)
else:
bool_lst_lg.append(False)
sq = [[] for a in range(9)]
for l in range(0,3):
for k in range(0,3): #가로로 한 뭉텅이
for i in range(3*l,3*(l+1)): #세로
for j in range(3*k,3*(k+1)): #가로
sq[3*l+k].append(sdk[i][j])
for i in range(9):
if set(sq[i]) == {1,2,3,4,5,6,7,8,9}:
bool_lst_sq.append(True)
else:
bool_lst_sq.append(False)
if bool_lst_lg== [True for i in range(9)] \
and bool_lst_wd == [True for i in range(9)] \
and bool_lst_sq == [True for i in range(9)]:
print("#{} 1".format(t))
else:
print("#{} 0".format(t))
이 문제는 연산이 정말 복잡하다.
정사각형으로 쪼갤 때 그 리스트를 만드는 과정에서 생각을 좀 해야 한다.
for문 4개의 중첩은 정말 헷갈렸다.
'Python > code problem' 카테고리의 다른 글
[sw expert academy] 1926. 간단한 369 게임 (0) | 2022.01.15 |
---|---|
[sw expert academy] 2005. 파스칼의 삼각형 (0) | 2022.01.12 |
[sw expert academy] 1954. 달팽이 숫자 (0) | 2022.01.06 |
[sw expert academy] 1966. 숫자를 정렬하자 (0) | 2022.01.05 |
[sw expert academy] 1961. 숫자 배열 회전 (0) | 2022.01.05 |