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

1961. 숫자 배열 회전 (코딩테스트, SW Expert Academy)

by 령과 2022. 4. 29.

문제:

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq 

 

SW Expert Academy

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

swexpertacademy.com

 

나의코드 : 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)))

댓글