고득점 Kit - 정렬 (K번째 수)

2023. 4. 12. 12:41·📚 Data Architect/Programmers
목차
  1. 💡 문제 파악
  2. 제한사항
  3. 입출력 예
  4. 풀이
  5. 다른 사람의 풀이

💡 문제 파악

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면

  1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
  2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
  3. 2에서 나온 배열의 3번째 숫자는 5입니다.

배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.


제한사항

  • array의 길이는 1 이상 100 이하입니다.
  • array의 각 원소는 1 이상 100 이하입니다.
  • commands의 길이는 1 이상 50 이하입니다.
  • commands의 각 원소는 길이가 3입니다.

입출력 예

array commands return
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
입출력 예 설명

[1, 5, 2, 6, 3, 7, 4]를 2번째부터 5번째까지 자른 후 정렬합니다. [2, 3, 5, 6]의 세 번째 숫자는 5입니다.
[1, 5, 2, 6, 3, 7, 4]를 4번째부터 4번째까지 자른 후 정렬합니다. [6]의 첫 번째 숫자는 6입니다.
[1, 5, 2, 6, 3, 7, 4]를 1번째부터 7번째까지 자릅니다. [1, 2, 3, 4, 5, 6, 7]의 세 번째 숫자는 3입니다.


풀이

import java.util.Arrays;

class Solution {

    static int[] a = {1, 5, 2, 6, 3, 7, 4};
    static int[][] b = {{2, 5, 3}, {4, 4, 1}, {1, 7, 3}};

    public static void main(String[] args) {
        solution(a,b);
    }

    public static int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        int[] temp;

        int i,j,k;
        for (int x=0; x<commands.length; x++) {
            // 2차원 배열 각 요소의 0,1,2 번째 인덱스를 i,j,k로 지정
            i = commands[x][0];
            j = commands[x][1];
            k = commands[x][2];

            // 자른 배열을 temp에 저장, 4,1,7 의 길이를 가진 배열 생성
            temp = new int[(j-i) + 1];
            int z = i;

            for (int y=0; y<temp.length; y++) {
                // temp[0] = array[2-1] 5
                // temp[1] = array[3-1] 2
                // temp[2] = array[4-1] 6
                // temp[3] = array[5-1] 3
                temp[y] = array[z-1];
                z++;
                System.out.println(Arrays.toString(temp));
            }

            // 위에서 나온 배열을 정렬 [2,3,5,6]
            Arrays.sort(temp);
            // k의 수를 정답에 저장
            // answer[0] = temp[3-1] = 5
            answer[x] = temp[k-1];
        }

        return answer;
    }
}

다른 사람의 풀이

import java.util.Arrays;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];

        for(int i=0; i<commands.length; i++){
            int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
            Arrays.sort(temp);
            answer[i] = temp[commands[i][2]-1];
        }

        return answer;
    }
}
저작자표시

'📚 Data Architect > Programmers' 카테고리의 다른 글

고득점 Kit - 정렬 (H-index)  (0) 2023.04.12
고득점 Kit - 정렬 (가장 큰 수)  (0) 2023.04.12
고득점 Kit - Stack & Queue (프린터)  (0) 2023.04.12
고득점 Kit - Stack & Queue (올바른 괄호)  (0) 2023.04.10
고득점 Kit - Stack & Queue (기능 개발)  (0) 2023.04.10
  1. 💡 문제 파악
  2. 제한사항
  3. 입출력 예
  4. 풀이
  5. 다른 사람의 풀이
'📚 Data Architect/Programmers' 카테고리의 다른 글
  • 고득점 Kit - 정렬 (H-index)
  • 고득점 Kit - 정렬 (가장 큰 수)
  • 고득점 Kit - Stack & Queue (프린터)
  • 고득점 Kit - Stack & Queue (올바른 괄호)
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      GStreamer #Pipeline
      Lock #Thread #Concurrency
      React #Markdown
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    고득점 Kit - 정렬 (K번째 수)
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.