Lv 2. 행렬 테두리 회전하기

2024. 8. 22. 21:26·Algorithm & Data Structures/Programers

 

코드 흐름

  • 특별한 기술이 들어간 것은 아니고 시작부터 모듈화하여 set과 turn 메서드로 나누어 풀이하였다.
  • set 에서는 처음 만들어지는 배열을 세팅하고
  • turn 에서는 실제로 시계방향으로 배열을 돌려가며 최소값을 찾아낸다.

오류 

  • 이문제를 푸는데 있어 여러가지 오류가 발생했다. 
  • 시계방향으로 돌려야 하건만 반시계 방향으로 돌리고 있었으며
  • 문제를 제대로 읽지않고 행렬 테두리만 회전하면 되는것을 행렬자체를 돌려 버렸다.
  • 문제를 잘 읽도록 하자.
import java.util.*;

class Solution {
    int[][] map;
    int[] answer;
    public int[] solution(int rows, int columns, int[][] queries) {
        answer = new int[queries.length];
        map = new int[rows + 1][columns + 1];
        set(rows, columns);
        for (int i = 0; i < queries.length; i++) {
            answer[i] = turn(queries[i][0], queries[i][1], queries[i][2], queries[i][3]);
        }
        return answer;
    }
    public void set(int rows, int columns) {
        int num = 1;
        for (int i = 1; i <= rows; i++) {
            for (int j = 1; j <= columns; j++) {
                map[i][j] = num;
                num++;
            }
        }
    }
    public int turn(int startX, int startY, int endX, int endY) {
        int min = Integer.MAX_VALUE;
        int temp = map[startX][startY];
        for (int i = startX; i < endX; i++) {
            map[i][startY] = map[i + 1][startY];
            min = Math.min(min, map[i][startY]);
        }
        for (int i = startY; i < endY; i++) {
            map[endX][i] = map[endX][i + 1];
            min = Math.min(min, map[endX][i]);
        }
        for (int i = endX; i > startX; i--) {
            map[i][endY] = map[i - 1][endY];
            min = Math.min(min, map[i][endY]);
        }
        for (int i = endY; i > startY; i--) {
            map[startX][i] = map[startX][i - 1];
            min = Math.min(min, map[startX][i]);
        }
        map[startX][startY + 1] = temp;
        min = Math.min(min, temp);
        return min;
    }
}

'Algorithm & Data Structures > Programers' 카테고리의 다른 글

Lv 2. 괄호 변환  (0) 2024.08.28
Lv 2. 무인도 여행  (0) 2024.08.26
Lv 2. 배달  (0) 2024.08.20
Lv 2. 전력망을 둘로 나누기  (1) 2024.08.19
Lv 2. 하노이의 탑  (0) 2024.08.13
'Algorithm & Data Structures/Programers' 카테고리의 다른 글
  • Lv 2. 괄호 변환
  • Lv 2. 무인도 여행
  • Lv 2. 배달
  • Lv 2. 전력망을 둘로 나누기
Geisha
Geisha
개발 일기
  • Geisha
    Geisha
    Geisha
  • 전체
    오늘
    어제
    • 분류 전체보기 (309) N
      • Algorithm & Data Structures (235) N
        • BOJ (92) N
        • SWEA (1)
        • Programers (138) N
        • Data Structures (3)
      • DB (21)
        • SQL (15)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • 운영체제 (13)
        • 네트워크 (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dfs
    골드
    baekjoon
    Dijkstra
    경로압축
    algorithm
    programmers
    프로그래머스
    알고리즘
    Java
    다익스트라
    이분탐색
    후위순회
    백트래킹
    유니온파인드
    binarySearch
    Union-Find
    dp
    PriorityQueue
    BFS
    unionfind
    SQL
    Stack
    동적계획법
    투포인터
    구현
    DynamicProgramming
    스택
    백준
    전위순회
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Geisha
Lv 2. 행렬 테두리 회전하기
상단으로

티스토리툴바