์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- doitandroid
- groupby
- ์๋๋ก์ด๋
- SQL
- join
- ์๋๋ก์ด๋์คํ๋์ค
- ํ๋ก๊ทธ๋๋จธ์ค
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์๋ฐ
- ์ ์ฒ๊ธฐ
- ์ฝํ๋ฆฐ
- Android
- ํผ๊ณต์ฑ๋ฆฐ์ง
- ํผ๊ณต๋จ
- java
- ์คํฐ๋
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ
- ์ธํ๋ฐ
- ์ฝํ
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฃ๊ตฌ์กฐ
- ํผ๊ณตํ
- select
- ์ค๋ธ์
- Til
- Kotlin
- CS
- ๊ธฐ์ ๋ฉด์
- MySQL
- ์นด์นด์ค์ฝํ
- Today
- Total
Welcome! Everything is fine.
[ํ๋ก๊ทธ๋๋จธ์ค/Lv.1] ๋ช ์์ ์ ๋น(1) - Java ๋ณธ๋ฌธ
๐ ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ํ์ด - ๋ฐฐ์ด ์ฌ์ฉ
๋๋ ์ด ๋ฌธ์ ๋ฅผ ๊ทธ๋ฅ ๋ฐฐ์ด์ ์ด์ฉํด ํ์์ง๋ง, ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ ์ฌ๋๋ค์ด ๋ง์๋ค. ์ค์ ๋ก ๋ฐฐ์ด์ ์ฌ์ฉํ ์ฝ๋์ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ ์ฝ๋๋ฅผ ๋น๊ตํด๋ณด๋ ์ฐ์ ์์ ํ๊ฐ ๋ ๋นจ๋๋ค. ์ด๋ฒ ๋ฌธ์ ๋ฅผ ํตํด ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ณต๋ถํด๋ณด๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
๋ด๊ฐ ์ฒ์ ์์ฑํ ๋ต์์ ๋ฐฐ์ด๊ณผ ์ ๋ ฌ์ ์ด์ฉํ์๋ค. ๋จผ์ ๋ช ์์ ์ ๋น์ ๋ค์ด๊ฐ๋ ์ ์๋ฅผ ์ ์ฅํ๋ hallOfFameScores ๋ฐฐ์ด๊ณผ ๋ช ์์ ์ ๋น์ ์ตํ์ ์ ์๋ฅผ ์ ์ฅํ๋ answer ๋ฐฐ์ด์ ๋ง๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ score ๋ฐฐ์ด์ ๋๋ฉฐ ๋ค์ 2๊ฐ์ง์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐฐ์ด์ด ์ฑ์์ง๋ค.
- i๊ฐ k๋ณด๋ค ์์ ๊ฒฝ์ฐ(๋ชจ๋ ์ถ์ฐ ๊ฐ์์ ์ ์๊ฐ ๋ช
์์ ์ ๋น์ ์ค๋ฅด๋ ๊ฒฝ์ฐ)
- ๋ช ์์ ์ ๋น 0๋ฒ์งธ์ ์ ์๋ฅผ ๋ฃ๋๋ค.
- ๋ช ์์ ์ ๋น์ ๋ค์ด๊ฐ ์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
- ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋ช ์์ ์ ๋น์ ์ ์๋ฅผ ๋ค์์๋ถํฐ ๊ฐ์ ธ์ ๋ฃ๋๋ค.
- i๊ฐ k๋ณด๋ค ํด ๊ฒฝ์ฐ(๋ช
์์ ์ ๋น k๋ฒ์งธ ์ ์๋ณด๋ค ์ ์๊ฐ ๋์ ์ฌ๋์ด ๋ช
์์ ์ ๋น์ ์ค๋ฅด๋ ๊ฒฝ์ฐ)
- ์ ์๊ฐ ๋ช ์์ ์ ๋น 0๋ฒ์งธ ์ ์(์ ์ผ ๋ฎ์ ์ ์)๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด ํด๋น ์ ์๋ฅผ 0๋ฒ์งธ ๋ฐฐ์ด์ ๋ฃ๋๋ค.
- ๋ช ์์ ์ ๋น์ ๋ค์ด๊ฐ ์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
- ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋ช ์์ ์ ๋น์ 0๋ฒ์งธ ์ ์๋ฅผ ๋ฃ๋๋ค.
for (int i = 0; i < score.length; i++) {
if (i < k) {
hallOfFameScores[0] = score[i];
Arrays.sort(hallOfFameScores);
answer[i] = hallOfFameScores[k-i-1];
} else {
if (score[i] >= hallOfFameScores[0]) hallOfFameScores[0] = score[i];
Arrays.sort(hallOfFameScores);
answer[i] = hallOfFameScores[0];
}
}
๐ ํ์ด - ์ฐ์ ์์ ํ ์ฌ์ฉ
์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฐ์ด๋ณด๋ค ๊ฐ๋จํ๊ฒ ํ ์ ์์๋ค. ์ฐ์ ์์ ํ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฎ์ ์ซ์ ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๋ฌธ์ ์์๋ ๊ทธ๋ฅ ์ ์ธํด์ ์ด์ฉํ๋ฉด ๋๋ค. ๋ง์ฝ ๋์ ์ซ์๋ฅผ ์ฐ์ ์์๋ก ๋๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ ์ธํ ๋ Collections.reverseOrder()๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
// ๋ฎ์ ์์๊ฐ ์ฐ์ ์์์ผ ๋
PriorityQueue<Integer> priorityQueueLowest = new PriorityQueue<>();
// ๋์ ์์๊ฐ ์ฐ์ ์์์ผ ๋
PriorityQueue<Integer> priorityQueueHeighest = new PriorityQueue<>(Collections.reverseOrder());
์ฐ์ ์์๋๋ก ๋์ค๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค.
for(int i = 0; i < score.length; i++){
pq.add(score[i]);
if(pq.size() > k) pq.poll();
answer[i] = pq.peek();
}
๐ ์ ์ฒด ์ฝ๋
๋ฐฐ์ด์ ์ด์ฉํ ํ์ด
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
int[] hallOfFameScores = new int[k];
for (int i = 0; i < score.length; i++) {
if (i < k) {
hallOfFameScores[0] = score[i];
Arrays.sort(hallOfFameScores);
answer[i] = hallOfFameScores[k-i-1];
} else {
if (score[i] >= hallOfFameScores[0]) hallOfFameScores[0] = score[i];
Arrays.sort(hallOfFameScores);
answer[i] = hallOfFameScores[0];
}
}
return answer;
}
}
์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํ ํ์ด
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int i = 0; i < score.length; i++){
pq.add(score[i]);
if(pq.size() > k) pq.poll();
answer[i] = pq.peek();
}
return answer;
}
}