๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/12906
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฐฐ์ด arr๊ฐ ์ฃผ์ด์ง๋๋ค. ๋ฐฐ์ด arr์ ๊ฐ ์์๋ ์ซ์ 0๋ถํฐ 9๊น์ง๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ์ด๋, ๋ฐฐ์ด arr์์ ์ฐ์์ ์ผ๋ก ๋ํ๋๋ ์ซ์๋ ํ๋๋ง ๋จ๊ธฐ๊ณ ์ ๋ถ ์ ๊ฑฐํ๋ ค๊ณ ํฉ๋๋ค. ๋จ, ์ ๊ฑฐ๋ ํ ๋จ์ ์๋ค์ ๋ฐํํ ๋๋ ๋ฐฐ์ด arr์ ์์๋ค์ ์์๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด,
- arr = [1, 1, 3, 3, 0, 1, 1] ์ด๋ฉด [1, 3, 0, 1] ์ return ํฉ๋๋ค.
- arr = [4, 4, 4, 3, 3] ์ด๋ฉด [4, 3] ์ return ํฉ๋๋ค.
๋ฐฐ์ด arr์์ ์ฐ์์ ์ผ๋ก ๋ํ๋๋ ์ซ์๋ ์ ๊ฑฐํ๊ณ ๋จ์ ์๋ค์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- ๋ฐฐ์ด arr์ ํฌ๊ธฐ : 1,000,000 ์ดํ์ ์์ฐ์
- ๋ฐฐ์ด arr์ ์์์ ํฌ๊ธฐ : 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ 9๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์
์ ์ถ๋ ฅ ์
arr | answer |
[1, 1, 3, 3, 0, 1, 1] | [1, 3, 0, 1] |
[4, 4, 4, 3, 3] | [4, 3] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1,2
- ๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
// ์ซ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์คํ์ ์์ฑ
Stack<Integer> stack = new Stack<>();
// ์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์คํ์ ์ ์ฅ
stack.push(arr[0]);
// ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ์ฌ ์ซ์ ํ์ธ
for(int num : arr) {
// ๋ง์ฝ ์คํ์ ๊ฐ์ฅ ๋ง์ง๋ง ๊ฐ๊ณผ num์ด ๊ฐ์ง ์์ ๊ฒฝ์ฐ
if (stack.peek() != num) {
// ์คํ์ ๊ฐ ์ ์ฅ
stack.push(num);
}
}
// ์คํ์ ๊ธธ์ด์ ๊ฐ์ answer ์์ฑ
answer = new int[stack.size()];
// ๋ณ์ k์ (์คํ ๊ธธ์ด - 1) ์ ์ฅ
int k = stack.size() - 1;
// ๋ฐ๋ณต๋ฌธ์ ํ์ฉ
while (!stack.isEmpty()){
// ์คํ์ ๋ง์ง๋ง ๊ฐ๋ถํฐ ํ๋์ฉ ์ ์ฅ
answer[k--] = stack.pop();
}
// answer ๋ฐํ
return answer;
}
}
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์๊ฐํ ๋ฐฉํฅ
- ์คํ์ ์ฌ์ฉํด์ ์ซ์ ์ ์ฅํ๊ธฐ
- answer์ ์คํ์ ์ ์ฅ๋ ๊ฐ ์ ์ฅํ๊ธฐ
- pop(), peek() ์ ๊ตฌ๋ถํ๊ณ ์ฌ์ฉํ๊ธฐ
'๐งฉ ํ๋ก๊ทธ๋๋จธ์ค > ๐ต ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ๊ธฐ๋ฅ๊ฐ๋ฐ (1) | 2025.03.29 |
---|---|
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ์์ฐ (1) | 2025.03.28 |
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) | 2025.03.27 |
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ์ต์๊ฐ ๋ง๋ค๊ธฐ (1) | 2025.03.26 |
[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2025.03.26 |