개발 창고/Algorithm
[프로그래머스] 명예의 전당 (1) - JAVA
로이제로
2024. 2. 28. 08:00
반응형
이 버전에서는 TOC를 지원하지 않습니다. (ex. 모바일)
문제
https://school.programmers.co.kr/learn/courses/30/lessons/138477
문제 내용은 지적 재산 보호 차원에서 가져오지 않고 풀이만 공유드리도록 하겠습니다.
풀이
제 풀이가 무조건적으로 맞는 것도 최적의 답변도 아니지만, 이런 풀이도 있다는 차원에서 작성해 보며, 좀 더 나은 방법이 있다면 이야기해 주셔도 도움 될 것 같습니다.
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length]; // 답변을 넣을 int 배열 공간
int[] sorted = new int[score.length]; // 정렬된 값을 넣을 int 배열 공간
for(int i = 0; i < score.length; i++){
int value = score[i]; // 현재 값
// System.out.println(value);
// Step. 등록된 값 정렬
for(int j = 0; j <= i; j++){
// Step. 등록된 값이 현재 값보다 작으면, 뒤로 미루기
if(sorted[j] == 0 || sorted[j] < value){
int temp = sorted[j];
sorted[j] = value;
value = temp;
}
}
// Step. 명예의 전당 개수가 저장된 개수보다 작은 경우 저장된 이원 마지막 번호로 저장
if(i < k){
answer[i] = sorted[i];
// Step. 명예의 전당 개수가 저장된 개수보다 많은 경우 명의 정당 인원 마지막 번호로 저장
}else{
answer[i] = sorted[k-1];
}
/*
for(int s:sorted) System.out.print(s + " ");
System.out.println();
*/
}
return answer;
}
}
반응형