본문 바로가기
코딩 테스트/프로그래머스

행렬 테두리 회전하기

by ornni 2024. 6. 9.
728x90
반응형

첫번째 코드

 

해당 문제를 보고 처음에는...어...난해했다..!!

어떻게 풀지...? 미뤄지는 알고리즘이 있나...?!

어..그래 뭐 일단 풀어보자!!! 라는 마인드로 시작했다.

 

일단 row와 col로 구성된 숫자 matrix를 만들었다!

이때 queries에 맞게 구성하기 위해 0번 인덱스에는 모두 0을 넣었다.

 

어떻게 풀었는지 고민하다가 움직이는 함수를 만들어야겠다~ 라는 생각을 했다!

해당 함수 설명을 위해서는 그림이 필수일 것 같다!

move라는 함수를 생성했다!

해당 함수는 아래 그림과 같은 역할을 한다.

이를 통해 새로운 numbers matrix와 움직인 값 중 최소값을 반환한다!

 

move 함수를 queries만큼 반복하면 계속 numbers matrix는 갱신되고 answers에 최소값을 append하여 더한다!

answers가 최종 답안이 된다!

 

def move(data, x1, y1, x2, y2):
    left = data[x1][y2]
    right = data[x2][y1]
    min_num = min(left, right)

    for i in range(y2, y1, -1):
        data[x1][i] = data[x1][i-1]
        min_num = min(min_num, data[x1][i-1])

    for i in range(y1, y2):
        data[x2][i] = data[x2][i+1]
        min_num = min(min_num, data[x2][i+1])
        
    for i in range(x2, x1, -1):
        data[i][y2] = data[i-1][y2]
        min_num = min(min_num, data[i-1][y2])

    for i in range(x1, x2):
        data[i][y1] = data[i+1][y1]
        min_num = min(min_num, data[i+1][y1])

    data[x2-1][y1] = right
    data[x1+1][y2] = left
    
    return data, min_num

def solution(rows, columns, queries):
    answers = []
    number = 1
    numbers = [[0] * (columns + 1)]
    for _ in range(rows):
        row_add = [0]
        for _ in range(columns):
            row_add.append(number)
            number += 1
        numbers.append(row_add)
    
    for i in queries:
        numbers, answer = move(numbers, i[0], i[1], i[2], i[3])
        answers.append(answer)
    
    return answers

 

통과!

알고리즘을 사용했다!! 라는 느낌보다는 뭔가 헷갈리지 않게 순서대로 정리하면서 꼼꼼히 작성해야 하는 문제인 것 같다!


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/77485.%E2%80%85%ED%96%89%EB%A0%AC%E2%80%85%ED%85%8C%EB%91%90%EB%A6%AC%E2%80%85%ED%9A%8C%EC%A0%84%ED%95%98%EA%B8%B0

 

programmers/프로그래머스/2/77485. 행렬 테두리 회전하기 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

두 정수 사이의 합  (0) 2024.06.12
문자열 다루기 기본  (0) 2024.06.10
둘만의 암호  (2) 2024.06.08
신고 결과 받기  (0) 2024.06.07
숫자 짝꿍  (0) 2024.06.06