๐ ์ฝ๋ฉํ
์คํธ/๋ฐฑ์ค & ํ๋ก๊ทธ๋๋จธ์ค
[ํ๋ก๊ทธ๋๋จธ์ค][JAVA]Level 1 : ์คํจ์จ
deep_lee
2023. 3. 4. 14:47
https://school.programmers.co.kr/learn/courses/30/lessons/42889
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ์ดํดํ๋๋ฐ๋ ์๊ฐ ์ข ๊ฑธ๋ฆฌ๊ณ ..
ํธ๋๋ฐ ๋๊ฒ ์ค๋๊ฑธ๋ ธ๋ค...
์ฃผ์ํ ์ ์ stage์ ๋์ฐฉํ ์ฌ๋์ด ์์๋๋ ์คํจ์จ ๊ณ์ฐํ๊ณ ,
๋์ฐฉํ ์ฌ๋์ด ์์๋๋ 0์ ๋ฃ์ด์ค์ผํ๋ค.
๊ทผ๋ฐ ๋๋ stage ์ ์ฌ๋์ด ์๋/์๋์ ์กฐ๊ฑด๋ฌธ์ ์ด์ํ๊ฒ ์จ๋์
๊ทธ๊ฑฐ ์ก์๋จน๋๋ฐ ์ค๋๊ฑธ๋ฆผ... 2์๊ฐ์ ๋ ๊ฑธ๋ ธ๋ค....
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
// ๊ฐ stage ๋ง๋ค ๋จธ๋ฌผ๋ฌ์๋ ์ฌ์ฉ์์๋ฅผ ๋ด๋๋ค , ์ธ๋ฑ์ค๊ฐ์ด ์คํ
์ด์ง๋ฒํธ
float[] stage = new float[N+1];
for(int i: stages){
if(i==N+1){
continue;
}
stage[i]++;
}
float[] fail_array = new float[N]; // ์คํจ์จ์ ๋ด์ ๋ฐฐ์ด
ArrayList<Float> index_array = new ArrayList<>(); // ์คํจ์จ๊ณผ ๋น๊ตํ์ฌ answer์ index๋ฅผ ๋ด์์ค ๋ฐฐ์ด
float len = stages.length; // ์คํจ์จ ๋น๊ต์ ๋ถ๋ชจ ๊ฐ
int index = 0; // ๋ฐฐ์ด์ index
for(int i = 1; i<stage.length; i++){
if(stage[i]!=0.0){ // ์คํ
์ด์ง i์ ๋์ฐฉํ ์ฌ๋์ด ์์๋
fail_array[index]=stage[i]/len;
index_array.add(stage[i]/len);
len -= stage[i];
} else { // ์คํ
์ด์ง์ ์ฌ๋์ด ์์ผ๋ฉด 0 ๋ฃ์ด์ฃผ๊ธฐ
fail_array[index]=0.0F;
index_array.add(0.0F);
continue;
}
index++;
}
Arrays.sort(fail_array); // ์คํจ์จ์ ์ ๋ ฌ
int num = 0;
// ์ ๋ ฌํ์ฌ ๊ฐ์ฅ ํฐ ๊ฐ๋ถํฐ ๋น๊ต
for(int i= fail_array.length-1; i>=0; i--){
for(int j=0; j<index_array.size(); j++){
if(fail_array[i]==index_array.get(j)){
answer[num]=j+1;
index_array.set(j, -1.F); // ์์ ์คํ
์ด์ง ๋จผ์ ๋ฃ์ด์ฃผ๊ณ , ํด๋น ๊ฐ์ -1๋ก
num++;
break;
}
}
}
return answer;
}
}