4/17(금) SA 문서 작성 (과정)

dev_joo·2026년 4월 17일
post-thumbnail

코드 카타

K번째수

문제에 따라 대체적으로 틀을 잡았다.

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        
        for(int[] command : commands) {
            int i = command[0];
            int j = command[1];
            int k = command[2];
            
            // 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고
            List<Integer> slice = new ArrayList<>();
            for(int x = i; x <= j; x++){
                slice.add(array[x]);
            }
            // 정렬했을 때,
            slice.sort();
            // k번째에 있는 수
            return slice.at(k);
            
        }

    }
}

자르기

배열을 범위에 따라 잘라낼 때는 copyOfRange(array, start, end) 를 사용하면 된다.
반개방 구간 : [start, end) 을 사용한다.
주어진 i 는 ~"번째" 이고 메서드에서 필요로 하는 값은 인덱스라서 i-1 처리를 해준다.

int[] slice = Arrays.copyOfRange(array, i - 1, j);

n번째 수 반환은 배열 사용

int[] 배열에 모든 command에 대한 결과를 미리 만들어서 마지막에 한꺼번에 반환해야 한다.

answer[c] = slice[k - 1];
...
return answer;

정답코드

import java.util.Arrays;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        // 결과를 담을 배열 (command 수 만큼 크기 지정)
        int[] answer = new int[commands.length];

        for(int c = 0; c < commands.length; c++) {
            int i = commands[c][0];
            int j = commands[c][1];
            int k = commands[c][2];

            // 1. i번째부터 j번째까지 자르기 
            int[] slice = Arrays.copyOfRange(array, i - 1, j);

            // 2. 정렬하기
            Arrays.sort(slice);

            // 3. k번째 수 추출하여 결과 배열에 담기
            answer[c] = slice[k - 1];
        }

        return answer;
    }
}

SA 문서 작성

서비스 플로우

서비스 내 흐름 작성

서비스내부의 동작 흐름, 서비스끼리의 요청 흐름, 이벤트 흐름을
대략적으로 나타내는 순서도를 자유롭게 그린 후 공유하여 컨텍스트 바운드를 작성하기로 했다.

컨텍스트 바운드 작성

컨텍스트 맵 작성

profile
풀스택 연습생. 끈기있는 삽질로 무대에서 화려하게 데뷔할 예정 ❤️🔥

0개의 댓글