[프로그래머스 Lv.2] Dev-Matching 웹 백엔드 개발자(상반기) - 행렬 테두리 회전하기

2024. 12. 16. 19:54·코딩테스트
728x90
반응형

문제

rows x columns 크기인 행렬이 있습니다.

행렬에는 1부터 rows x columns까지의 숫자가 한 줄씩 순서대로 적혀있습니다.

이 행렬에서 직사각형 모양의 범위를 여러 번 선택해, 테두리 부분에 있는 숫자들을 시계방향으로 회전시키려 합니다.

각 회전은 (x1, y1, x2, y2)인 정수 4개로 표현하며, 그 의미는 다음과 같습니다. x1 행 y1 열부터 x2 행 y2 열까지의 영역에 해당하는 직사각형에서 테두리에 있는 숫자들을 한 칸씩 시계방향으로 회전합니다.

 

행렬의 세로 길이(행 개수) rows, 가로 길이(열 개수) columns, 그리고 회전들의 목록 queries가 주어질 때, 각 회전들을 배열에 적용한 뒤, 그 회전에 의해 위치가 바뀐 숫자들 중 가장 작은 숫자들을 순서대로 배열에 담아 return 하도록 solution 함수를 완성해주세요.

 

코드

def rotation(matrix, r1, c1, r2, c2):
    r1 -= 1; c1 -= 1; r2 -= 1; c2 -= 1
    stack = [matrix[r1][c1]]

    for c in range(c1+1,c2+1):
        stack.append(matrix[r1][c])
        matrix[r1][c] = stack[-2]
        
    for r in range(r1+1,r2):
        stack.append(matrix[r][c2])
        matrix[r][c2] = stack[-2]

    for c in range(c2,c1-1,-1):
        stack.append(matrix[r2][c])
        matrix[r2][c] = stack[-2]
        
    for r in range(r2-1,r1-1, -1):
        stack.append(matrix[r][c1])
        matrix[r][c1] = stack[-2]
    
    return min(stack), matrix

def solution(rows, columns, queries):
    answer = []
    matrix = []
    
    for i in range(rows):
        matrix.append([j + i * columns for j in range(1,columns+1)])
    
    for query in queries:
        r1, c1, r2, c2 = query[:]
        result, matrix = rotation(matrix, r1, c1, r2, c2)
        answer.append(result)
    
    return list(answer)

 

메모

rotation의 경우 t1과 t2의 변수를 따로 둬서 원본 값들을 저장했었다.

다른 분이 스택을 활용하는 것을 보고 코드를 수정하였다.

728x90
반응형

'코딩테스트' 카테고리의 다른 글

[프로그래머스 Lv.2] 월간 코드 챌린지 시즌1 - 쿼드압축 후 개수 새기  (2) 2024.12.16
[프로그래머스 Lv.2] 2020 카카오 인턴십 - 수식 최대화 @  (1) 2024.12.16
[프로그래머스 Lv.2] 카카오 블라인드 채용 - 방금 그 곡 (+34번 케이스 오류)  (2) 2024.12.16
[프로그래머스 Lv.2] 카카오 블라인드 채용 - n진수 게임] (구현 쉬움)  (3) 2024.12.14
[프로그래머스 Lv.2] 카카오 블라인드 채용 - k진수에서 소수 개수 구하기  (0) 2024.12.13
'코딩테스트' 카테고리의 다른 글
  • [프로그래머스 Lv.2] 월간 코드 챌린지 시즌1 - 쿼드압축 후 개수 새기
  • [프로그래머스 Lv.2] 2020 카카오 인턴십 - 수식 최대화 @
  • [프로그래머스 Lv.2] 카카오 블라인드 채용 - 방금 그 곡 (+34번 케이스 오류)
  • [프로그래머스 Lv.2] 카카오 블라인드 채용 - n진수 게임] (구현 쉬움)
View synthesis 공부하는 대학원생
View synthesis 공부하는 대학원생
AI - view synthesis에 대해 공부하고 있으며, AI 공부하시는 분들과 함께 소통하고 싶습니다 😍
  • View synthesis 공부하는 대학원생
    Happy Support's Blog
    View synthesis 공부하는 대학원생
  • 전체
    오늘
    어제
    • 분류 전체보기 (62)
      • View synthesis (3)
      • Backbone (5)
      • Generative Models (5)
      • On-device AI (3)
      • ML (2)
      • DL (1)
      • LLM (2)
      • 코딩테스트 (25)
      • 에러 해결 모음집 (11)
      • 기타 (4)
  • 링크

  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
View synthesis 공부하는 대학원생
[프로그래머스 Lv.2] Dev-Matching 웹 백엔드 개발자(상반기) - 행렬 테두리 회전하기
상단으로

티스토리툴바