코딩테스트/코딩테스트 Python

[CodeSignal] rotateImage (Python)

sseozytank 2022. 9. 14.

https://app.codesignal.com/interview-practice/task/5A8jwLGcEpTPyyjTB/description

 

rotateImage | CodeSignal

Press space bar to start a drag. When dragging you can use the arrow keys to move the item around and escape to cancel. Some screen readers may require you to be in focus mode or to use your pass through key

app.codesignal.com

 

✔️문제 요약 

1.주어진 배열에서 시계방향으로 90도 회전한 배열 출력 

 

✔️풀이 방법 

1.예제로 준  부분의 인덱스를 살펴본 결과 , 행/열을 전환하고 좌우 반전을 해주면 되는 것을 파악했다! 따라서 두단계로 나누어 해당 코드를 구현해줌 

#시계방향 가로세로 90도 회전 
#(0,0) (0,1) (0,2)
#(1,0) (1,1) (1,2)
#(2,0) (2,1) (2,2) 

#(0,2) (1,2) (2,2)
#(0,1) (1,1) (2,1)
#(0,0) (1,0) (2,0) 

#행열의 구조를 바꿔주면됨
#첫번째 행은 열이3 두번째 행은 열이 2 세번째 행은 열이 1 
#첫번째 열은 행이1 두번째 열은 행이 2 세번째 행은 행이 3 
#행,열을 바꿔주고 좌우 반전 해준다

def solution(a):
    row=col=len(a)
    #행,열 전환
    for i in range(len(a)):
        for j in range(i):
            a[i][j], a[j][i] = a[j][i], a[i][j]
    #좌우반전        
    for m in a:
        for k in range(col // 2):
            m[k], m[col-1-k] = m[col-1-k], m[k] 
            
    return a

 

✔️고찰

-다른 풀이들은 뭔가 나처럼 무식하게 푼 것 같지 않아서 ... 코동 리뷰시간 때 다른 사람 풀이를 들어봐야겠다. 

댓글