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

2022. 6. 8. 10:20·📂 Backend Engineering
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
반응형
저작자표시 비영리 변경금지 (새창열림)

'📂 Backend Engineering' 카테고리의 다른 글

[JPA] JPA를 사용하는 이유 및 객체와 SQL 중심의 개발 문제점  (0) 2022.07.03
@Transactional에 대해 / @Transactional(readOnly = false) @Transactional(readOnly = true) 차이  (0) 2022.06.23
[프로그래머스 Level2] 전화번호 목록 - 자바(java) | 해쉬 사용  (0) 2022.06.05
[프로그래머스 Level1] 완주하지 못한 선수 - 자바(Java) | 해시 사용하기  (0) 2022.06.04
[프로그래머스Level1] 핸드폰 번호 가리기 - 자바(java)  (0) 2022.06.04
'📂 Backend Engineering' 카테고리의 다른 글
  • [JPA] JPA를 사용하는 이유 및 객체와 SQL 중심의 개발 문제점
  • @Transactional에 대해 / @Transactional(readOnly = false) @Transactional(readOnly = true) 차이
  • [프로그래머스 Level2] 전화번호 목록 - 자바(java) | 해쉬 사용
  • [프로그래머스 Level1] 완주하지 못한 선수 - 자바(Java) | 해시 사용하기
foodev
foodev
이것저것 개발과 이것저것 리뷰 합니다.
    반응형
    250x250
  • foodev
    개발 개맛집
    foodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (106) N
      • ⭐ Featured (4)
      • 📂 Backend Engineering (38)
      • 📂 Troubleshooting & Ops (10)
      • 📂 Infra & System (7) N
      • 📂 Reflections (21)
        • Year-in-Review (5)
        • Work & Career (10)
        • Lessons Learned (6)
      • 📂 Team Journal (10)
      • 📂 Archive (16)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바