본문 바로가기
코딩테스트

행렬 테두리 회전하기

by 느림보어른 2021. 5. 29.

문제풀이

def solution(rows, columns, queries):
    answer = []
    
    table = [[1 + i + x for i in range(0, columns)] for x in range(0, rows*columns, columns)]
    min_array = []
    
    for query in queries[:]:
        for idx in range(0, 4):
            query[idx] = query[idx] - 1
        
        min_value = table[query[0]+1][query[1]]
        key_1 = table[query[0]+1][query[1]]
        
        for point_x in range(query[1], query[3]):
            key_2 = table[query[0]][point_x]
            if key_2 < min_value:
                min_value = key_2
            table[query[0]][point_x] = key_1
            key_1 = key_2
        
        for point_y in range(query[0], query[2]):
            key_2 = table[point_y][query[3]]
            if key_2 < min_value:
                min_value = key_2
            table[point_y][query[3]] = key_1
            key_1 = key_2
            
        for point_x in range(query[3], query[1], -1):
            key_2 = table[query[2]][point_x]
            if key_2 < min_value:
                min_value = key_2
            table[query[2]][point_x] = key_1
            key_1 = key_2 
            
        for point_y in range(query[2], query[0], -1):
            key_2 = table[point_y][query[1]]
            if key_2 < min_value:
                min_value = key_2
            table[point_y][query[1]] = key_1
            key_1 = key_2
        
        min_array.append(min_value)
    
    answer = min_array
            
    
    return answer

알고리즘

특별한 알고리즘이 쓰이지 않은 간단한 문제이다. 하지만 시간이 오래 걸렸다. 이런 문제는 빠르게 풀 수 있도록 더 많은 문제를 풀어봐야겠다.

출처

문제: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

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

키패드 누르기  (0) 2021.05.30
튜플  (0) 2021.05.29
음양 더하기  (0) 2021.05.29
소수 찾기  (0) 2021.05.28
신규 아이디 추천  (0) 2021.05.28