문제:
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq
나의코드 : 19분 51초
from collections import defaultdict
T = int(input())
for test_case in range(1, T + 1):
N = int(input())
answer = defaultdict(list)
table = []
for i in range(N): #input 받는 코드
table.append(list(map(int, input().split())))
table = list(map(list,zip(*table[::-1]))) #90도 회전
for i in range(N):
answer[i].append("".join(map(str,table[i])))
table = list(map(list,zip(*table[::-1]))) #180도 회전
for i in range(N):
answer[i].append("".join(map(str,table[i])))
table = list(map(list,zip(*table[::-1]))) #270도 회전
for i in range(N):
answer[i].append("".join(map(str,table[i])))
print("#"+str(test_case))
for i in answer.keys():
print(" ".join(answer[i]))
문제 이해하는데 시간이 더 걸린 듯 하다.
박스 3개 기준으로 왼쪽부터 90도 180도 270도 회전하는 모습을 볼 수 있다.
옛날에 프로그래머스 문제를 풀다가 배열 회전과 관련된 문제를 해결한 적 있는데
이번에도 그러한 방법을 사용하였다.
zip(*2차원배열[::-1])으로 하면 시계방향 90도 회전한 zip객체를 얻게되는데,
list로 묶으면 리스트 안에 튜플요소들이 들어간 형태로 들어가져있다.
다음에도 회전하는데 사용하기 위해 튜플들을 전부 리스트형식으로 변경하기 위해 map을 사용하였고
map객체를 다시 리스트로 바꾸면 90도 회전된 배열을 얻을 수 있다.
오늘 해결한 간단한 문제들
더보기
1284. 수도 요금 경쟁 :5분 23초
T = int(input())
for test_case in range(1, T + 1):
P, Q, R, S, W = map(int, input().split())
B = Q
A = P*W
if W>=R:
B += (W-R) * S
print('#'+str(test_case),min(A,B))
더보기
5431. 민석이의 과제 체크하기
T = int(input())
for test_case in range(1, T + 1):
N, K = map(int, input().split()) #수강자 수, 제출한 수
num_list = list(map(int, input().split())) # 제출 명단
all_list = list(range(1,N+1))
answer = [i for i in all_list if i not in num_list]
answer.sort()
print("#"+str(test_case)," ".join(map(str,answer)))
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
1216. [S/W 문제해결 기본] 3일차 - 회문2 (코딩테스트, SW Expert Academy) (0) | 2022.05.05 |
---|---|
1979. 어디에 단어가 들어갈 수 있을까 (코딩테스트, SW Expert Academy) (0) | 2022.05.03 |
1209. [S/W 문제해결 기본] 2일차 - Sum (코딩테스트, SW Expert Academy) (0) | 2022.04.28 |
1945. 간단한 소인수분해 (코딩테스트, SW Expert Academy) (0) | 2022.04.27 |
1493. 수의 새로운 연산 (코딩테스트, SW Expert Academy) (0) | 2022.04.25 |
댓글