[프로그래머스 Level1] k번째 수 구하기 - 자바(java) | 정렬

2022. 6. 8. 10:20·💻 개발/알고리즘
728x90
반응형
🌌프로그래머스 k번째 수 구하기 - 자바(java)

 

📚 문제 설명

배열 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]

 


💻 작성 코드

import java.util.Arrays;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length]; //---(1)
        
        for(int i = 0; i < commands.length; i++) { 
            int[] tmp = Arrays.copyOfRange(array, commands[i][0] -1, commands[i][1]); //---(2)
            Arrays.sort(tmp); 
            answer[i] = tmp[commands[i][2] -1]; //---(3)
        }
        return answer;
    }
}

🗝️ 해석 

(1)번: 객체 선언 및 배열의 길이를 commands.length로 초기화 한다. // 배열의 길이는 초기설정 되어야함

(2)번: copyOfRange로 배열 복사, 

   - copyOfRange(배열, 시작index, 끝index);

   - commands[i][0] = 2, 5, 3  commands[i][1] = 5, 4, 7

   - commands[i][0]의 값에 -1을 해주어야 문자열 길이를 구할 수 있음 

(3)번: tmp[0][2] = k 번째 수,

   - k번째 수에 -1로 문자열 길이를 구함 

 


🎉 배운점

CopyOfRange(array, startIdx, endIdx); 

int [] answer = new int[commands.length]; 배열 길이를 넣어버린 초기 설정. 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'💻 개발 > 알고리즘' 카테고리의 다른 글

[문제분석/해석] n-puzzle 최소이동 횟수 알고리즘 구하기(이미지 추가)  (1) 2023.04.15
콜라츠 추측 함수로 쪼개어 풀어보기  (0) 2022.10.01
[프로그래머스 Level2] 전화번호 목록 - 자바(java) | 해쉬 사용  (0) 2022.06.05
[프로그래머스 Level1] 완주하지 못한 선수 - 자바(Java) | 해시 사용하기  (0) 2022.06.04
[프로그래머스Level1] 핸드폰 번호 가리기 - 자바(java)  (0) 2022.06.04
'💻 개발/알고리즘' 카테고리의 다른 글
  • [문제분석/해석] n-puzzle 최소이동 횟수 알고리즘 구하기(이미지 추가)
  • 콜라츠 추측 함수로 쪼개어 풀어보기
  • [프로그래머스 Level2] 전화번호 목록 - 자바(java) | 해쉬 사용
  • [프로그래머스 Level1] 완주하지 못한 선수 - 자바(Java) | 해시 사용하기
foodev
foodev
이것저것 개발과 이것저것 리뷰 합니다.
    반응형
    250x250
  • foodev
    개발 개맛집
    foodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (109)
      • 🌟🙇🏻‍♂️ 꼭 읽어봤으면 하는 글 (4)
      • 💻 개발 (72)
        • 설정 및 세팅 (4)
        • DB&서버&네트워크&암호 (11)
        • React (0)
        • JPA, Querydsl (13)
        • 알고리즘 (7)
        • 언어 (15)
        • 프레임워크 (12)
        • HTML, CSS (10)
      • ✍🏻 (33)
        • 회고록 (16)
        • 독서록 (7)
        • 일지록 (9)
        • 세미나 (1)
      • 💡 리뷰 (0)
        • 제품리뷰 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JPA
    해피해킹 방향키
    githubaction 라벨 ci/cd
    db 날린 썰
    nestjs pipe body
    해피해킹 커스텀
    스냅샷방식
    스냅샷과 히스토리
    토이프로젝트개발일지
    di동작원리
    해피해킹 꿀팁
    스냅샷과로그성
    validation failed (numeric string is expected)
    typedi란
    di란
    디비스냅샷
    개발썰
    githubaction 라벨 배포
    서이추
    창업패키지후기
    nestjs pipe
    db 날림
    di의존성
    db 초기화
    azure ci/cd
    해피해킹 카라비너
    QueryDSL
    해피해킹 키매핑
    typedi 동작원리
    스냅샷과히스토리성 차이
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
foodev
[프로그래머스 Level1] k번째 수 구하기 - 자바(java) | 정렬
상단으로

티스토리툴바