2021 Dev-Matching - 행렬 테두리 회전하기

1. 행렬 테두리 회전하기

A. 📜 문제

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.

B. 💡 내 답안

a. 😊 1차 시도 (성공)

def solution(rows, columns, queries):
    array = []
    
    for i in range(rows):
        temp = []
        for j in range(columns):
            temp.append(i * columns + (j+1))
        array.append(temp)
    
    answer = []
    
    for i in queries:
        x_1, y_1, x_2, y_2 = i
        row_len = x_2 - x_1
        column_len = y_2 - y_1
        dx, dy = x_1-1, y_1-1
        
        temp = [array[dx][dy]]
        # temp = []
        
        for j in range(column_len):
            dy += 1
            temp.append(array[dx][dy])
            array[dx][dy] = temp[-2]
        
        for j in range(row_len):
            dx += 1
            temp.append(array[dx][dy])
            array[dx][dy] = temp[-2]
            
        for j in range(column_len):
            dy -= 1
            temp.append(array[dx][dy])
            array[dx][dy] = temp[-2]
        
        for j in range(row_len):
            dx -= 1
            temp.append(array[dx][dy])
            array[dx][dy] = temp[-2]
        
        # print(temp)
        answer.append(min(temp))
        
        
    return answer

a. 🙄 회고

내 풀이

  • 이런 비슷한 문제를 한번에 풀려다 실패한 기억이 있었다.
  • 그래서 한 줄 한줄 차근차근 풀기로 했다.
  • 직사각형의 위쪽 행, 오른쪽 열, 아래쪽 행, 왼쪽 열 순서로 값을 구해 리스트에 넣어서 풀었다.

반성

  • 어떻게 하면 한 번에 풀 수 있을지, 고민이 조금 길었다.

C. 🧐 문제 해설

이해한 내용을 바탕으로 작성했습니다.

단순히 풀면 temp 리스트에 값을 집어 넣고 값을 집어 넣을 때 사용했던 코드를 반복하면서 값을 교체하면 된다.

그런데, 그냥 그렇게 하기 싫었다. 복사 붙여넣기가 귀찮아서, 머리를 조금 더 굴려봤다.

참고문헌

2021 Dev-Matching_웹 백엔드 개발자(상반기).코딩테스트 연습 - 행렬 테두리 회전하기 | 프로그래머스 (programmers.co.kr). Programmers. (accessed Oct 11, 2021)

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.