728x90
반응형
SMALL
*문제의 저작권은 SW Expert에 있습니다.
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5Pq-OKAVYDFAUq&categoryId=AV5Pq-OKAVYDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=2
이번 문제는 문제 이해부터 어려웠던...
먼저 문제를 이해하면 다음 그림과 같다.
즉, 행과 열의 바뀌는 패턴만 이해하면 된다!!!!!!!!!!!
행과 열의 숫자로 표현하면
이렇게 된다. 패턴이 보이기 시작!
이렇게 바뀐 2차원 행렬을 출력하려고 하니 굉장히 막막해졌...
그래서 다른 방법으로 각 행별로 저장하여 출력하기로 했다.
그래서 나온 코드!
T = int(input())
for test_case in range(1,T+1):
lines = int(input())
a,result = [],[]
# lines만큼 input 받아 배열로 저장
for i in range(lines):
a.append(list(map(str, input().split())))
#90도 회전시 (0,0)->(2,0),(0,1)->(1,0),(0,2)->(2,0)... 처럼 나타나는 패턴별로 각 행별 input
for n in range(0,lines):
row1,row2,row3 = [], [], []
for m in range(0,lines):
row1.append(str(a[lines-1-m][n]))
row2.append(str(a[lines-1-n][lines-1-m]))
row3.append(str(a[m][lines-1-n]))
#각 행을 한줄로 배열에 저장
result += [''.join(row1),''.join(row2),''.join(row3)]
print(f"#{test_case}")
#3번 출력시 다음 줄로 넘어가도록 출력
for x in range(0,len(result)):
print(result[x],end="\n" if (x+1)%3==0 and x>=2 else ' ')
주관적으로 D2 난이도 중에서 제일 머리써야 했던 것 같다...
728x90
반응형
LIST
'프로그래밍언어 > Code_Practice' 카테고리의 다른 글
이진탐색트리 검사 알고리즘 (0) | 2021.05.21 |
---|---|
[SW Expert Academy] 파이썬 SW문제해결 구현_2일차 : 최소합 (0) | 2021.02.02 |
[SW Expert Academy] 간단한 압축 풀기 (0) | 2021.01.27 |
[SW Expert Academy] 달팽이 숫자 (0) | 2021.01.22 |
[SW Expert Academy] 시각 덧셈 (0) | 2021.01.21 |