-
[프로그래머스] k번째 수 | 정렬 | 코딩테스트알고리즘 2023. 8. 9. 17:41
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42748
import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { //입력 : array //입력2 : i~j번째. k번째의 수. -> commands int[][] // -> command int[] -> [i, j, k] // i, j, k도 인덱스가 아니라 일반적인 수(1부터 시작) /* 배열을 <정렬>하면 _> 2, 3, 5, 6 크기 순서대로 줄을 세우는 것. (1) 어떤 크기를 기준으로 삼을 것인가? (2) 그 크기를 어떤 방향으로 정리할 것인가? (작은 순, 큰 순 ...) (1-1)배열이 있다 -> 1차원 배열의 정렬 기준 -> 그 자체의 값 => 김자바, 이몽룡...어떤 값이 더 큰데? 김과 이는 숫자로 비교할 수 없음 => 숫자 기준으로 비교를 못 할 경우, 우리의 사고는 한글 가나다 순서로 비교. (2-1)어느 방향으로 줄 세워? - 1. 작은 값이 먼저 오고 큰 값이 뒤로 온다. : 오름차순 ascending - 2. 큰 값이 먼저 오고 작은 값이 뒤로 온다. : 내림차순 decending */ //반복문 -> commands(i, j, k)를 처리 //commands를 반복할 때, 그 결과물을 배열로 저장 int[] answer = new int[commands.length]; for(int a=0; a < commands.length; a++) { int[] command = commands[a]; //원소 -> i, j, k int i = command[0]; System.out.println("i: " + i); // 일반적인 숫자 체계이므로 컴퓨터 숫자체계로 변환해야 함. int j = command[1]; System.out.println("j: " + j); int k = command[2]; System.out.println("k: " + k + "\n"); int[] newArray = new int[j - i + 1]; int index = 0; //newArray에 새로운 값을 넣어주기 위한 인덱스 /* for(int b = i; b <= j; b++) { newArray[index++] = array[b-1]; } */ for(int b = i-1; b < j; b++) { newArray[index++] = array[b]; } System.out.println("**newArray**"); for(int n : newArray){ System.out.println(n); } System.out.println("**정렬**"); Arrays.sort(newArray); //매개변수로 배열을 넣으면 정렬해줌. 원본이 변함! //Arrays.sort : 오름차순으로 자동 정렬 for(int n : newArray){ System.out.println(n); } int value = newArray[k-1]; System.out.println("k번째 수: " + value); answer[a] = value; } //int[] answer = {}; return answer; } }
'알고리즘' 카테고리의 다른 글
스택과 큐의 기본 개념 | visualgo.net (0) 2023.08.10 [백준]11651번: 좌표 정렬하기 2 | 배열 정렬, 람다식 | 코딩테스트 (0) 2023.08.10 [프로그래머스] 제일 작은 수 제거하기 | 배열, 리스트 | 코딩테스트 (0) 2023.08.09 [백준]개수 세기 | 배열 | 코딩테스트 (0) 2023.08.09 [프로그래머스]문자열 내 p와 y의 개수 : chatGPT의 활용방안까지 - 코딩테스트 (0) 2023.08.09