TIL - 23.01.13

0

TIL

목록 보기
54/126

알고리즘 문제로 배열 회전시키기가 나왔다
예를들어 파라미터로 배열 [1, 2, 3]와 String "right"가 들어온다면 [2, 3, 1]을 리턴하고,
배열 [1, 2, 3, 4]와 String "left"가 들어오면 [2, 3, 4, 1]을 리턴하도록 하는 함수를 만들라는 것이었다.

나는 처음에 배열을 하나 더 만들고 for문 두개로 각 배열을 돌리면서 값을 옮겨넣는 방식을 생각했었다.
그러다가 아 이게 맞나? 싶은 기분이 들어서 머리속으로만 생각하는게 아니라 종이와 펜을 가지고 직접 그려보니 확실하게 그림이 그려졌다.

class Solution {
    public int[] solution(int[] numbers, String direction) {

        int[] answer = new int[numbers.length];
        
        for (int i = 0; i < numbers.length - 1; i++) {
            if (direction.equals("right")) {
                answer[i + 1] = numbers[i];
                answer[0] = numbers[numbers.length - 1];
            } else if (direction.equals("left")) {
                answer[i] = numbers[i + 1];
                answer[numbers.length - 1] = numbers[0];
            }
        }
        
        return answer;
    }
}

진짜 확실히 알고리즘은 머리속으로만 생각하고 바로 코딩을 해보는것보다 예시를 그림으로 그려보면서 방향성을 잡는것이 실수를 잡기도 좋고 고민도 덜하는거같다.

0개의 댓글