[programmers] ํ๋ฐฐ์์ - Java
ํ๋ฐฐ์์๋ฅผ ํธ๋ญ์ ์ค์ด์ผ ํ๋ ๋ฌธ์ ์์, ์์ฌ๋ ์ปจํ
์ด๋ ๋ฒจํธ์์ ์์๋ฅผ ์ํ๋ ์์๋ก ์ค์ด์ผ ํ๋ฉฐ, ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ๋ฅผ ์ด์ฉํด ์์๋ฅผ ์์๋ก ๋ณด๊ดํ ์ ์๋ค. ์ฃผ์ด์ง ์์์ ๋ง์ถฐ ๋ช ๊ฐ์ ์์๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ค์ ์ ์๋์ง๋ฅผ ๊ณ์ฐํ๋ Java ์๋ฃจ์
์ ์ ๊ณตํ๋ฉฐ, ์คํ์ ํ์ฉํ์ฌ ์์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ค.
Oct 21, 2024
ํ๋ฐฐ์์
๋ฌธ์ ์ค๋ช
์์ฌ๋ ํ๋ฐฐ์์๋ฅผ ํธ๋ญ์ ์ฃ๋ ์ผ์ ํฉ๋๋ค. ์์ฌ๊ฐ ์ค์ด์ผ ํ๋ ํ๋ฐฐ์์๋ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ์ผ๋ฉฐ 1๋ฒ ์์๋ถํฐ n๋ฒ ์์๊น์ง ๋ฒํธ๊ฐ ์ฆ๊ฐํ๋ ์์๋๋ก ์ปจํ
์ด๋ ๋ฒจํธ์ ์ผ๋ ฌ๋ก ๋์ฌ ์์ฌ์๊ฒ ์ ๋ฌ๋ฉ๋๋ค. ์ปจํ
์ด๋ ๋ฒจํธ๋ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์งํ์ด ๊ฐ๋ฅํด์ ๋ฒจํธ์ ๋์ธ ์์๋๋ก(1๋ฒ ์์๋ถํฐ) ์์๋ฅผ ๋ด๋ฆด ์ ์์ต๋๋ค. ํ์ง๋ง ์ปจํ
์ด๋ ๋ฒจํธ์ ๋์ธ ์์๋๋ก ํ๋ฐฐ์์๋ฅผ ๋ด๋ ค ๋ฐ๋ก ํธ๋ญ์ ์ฃ๊ฒ ๋๋ฉด ํ๋ฐฐ ๊ธฐ์ฌ๋์ด ๋ฐฐ๋ฌํ๋ ์์์ ํ๋ฐฐ์์๊ฐ ์ค๋ ค ์๋ ์์๊ฐ ๋ง์ง ์์ ๋ฐฐ๋ฌ์ ์ฐจ์ง์ด ์๊น๋๋ค. ๋ฐ๋ผ์ ํ๋ฐฐ ๊ธฐ์ฌ๋์ด ๋ฏธ๋ฆฌ ์๋ ค์ค ์์์ ๋ง๊ฒ ์์ฌ๊ฐ ํ๋ฐฐ์์๋ฅผ ์ค์ด์ผ ํฉ๋๋ค.
๋ง์ฝ ์ปจํ
์ด๋ ๋ฒจํธ์ ๋งจ ์์ ๋์ธ ์์๊ฐ ํ์ฌ ํธ๋ญ์ ์ค์ด์ผ ํ๋ ์์๊ฐ ์๋๋ผ๋ฉด ๊ทธ ์์๋ฅผ ํธ๋ญ์ ์ค์ ์์๊ฐ ๋ ๋๊น์ง ์ ์ ๋ค๋ฅธ ๊ณณ์ ๋ณด๊ดํด์ผ ํฉ๋๋ค. ํ์ง๋ง ๊ณ ๊ฐ์ ๋ฌผ๊ฑด์ ํจ๋ถ๋ก ๋
์ ๋ ์ ์์ด ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ๋ฅผ ์ถ๊ฐ๋ก ์ค์นํ์์ต๋๋ค. ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ๋ ์ ๋ค๋ก ์ด๋์ด ๊ฐ๋ฅํ์ง๋ง ์
๊ตฌ ์ธ์ ๋ค๋ฅธ ๋ฉด์ด ๋งํ ์์ด์ ๋งจ ์์ ์์๋ง ๋บ ์ ์์ต๋๋ค(์ฆ, ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ์ ๋ณด๊ดํ ์์๋ถํฐ ๊บผ๋ด๊ฒ ๋ฉ๋๋ค). ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ๋ฅผ ์ด์ฉํด๋ ๊ธฐ์ฌ๋์ด ์ํ๋ ์์๋๋ก ์์๋ฅผ ์ฃ์ง ๋ชป ํ๋ค๋ฉด, ๋ ์ด์ ์์๋ฅผ ์ฃ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์ฌ๊ฐ 5๊ฐ์ ์์๋ฅผ ์ค์ด์ผ ํ๋ฉฐ, ํ๋ฐฐ ๊ธฐ์ฌ๋์ด ์๋ ค์ค ์์๊ฐ ๊ธฐ์กด์ ์ปจํ
์ด๋ ๋ฒจํธ์ ๋ค ๋ฒ์งธ, ์ธ ๋ฒ์งธ, ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ๋ค์ฏ ๋ฒ์งธ ๋์ธ ํ๋ฐฐ์์ ์์์ธ ๊ฒฝ์ฐ, ์์ฌ๋ ์ฐ์ ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ ์์๋ฅผ ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ์ ๋ณด๊ดํฉ๋๋ค. ๊ทธ ํ ๋ค ๋ฒ์งธ ์์๋ฅผ ํธ๋ญ์ ์ฃ๊ณ ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ์์ ์ธ ๋ฒ์งธ ์์ ๋นผ์ ํธ๋ญ์์ฃ์ต๋๋ค. ๋ค์์ผ๋ก ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ค์ด์ผ ํ์ง๋ง ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ์์๋ ๋ ๋ฒ์งธ ์์๋ฅผ, ๊ธฐ์กด์ ์ปจํ
์ด๋ ๋ฒจํธ์๋ ๋ค์ฏ ๋ฒ์งธ ์์๋ฅผ ๊บผ๋ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ด์์ ์์๋ ์ค์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํธ๋ญ์๋ 2๊ฐ์ ์์๋ง ์ค๋ฆฌ๊ฒ ๋ฉ๋๋ค.
ํ๋ฐฐ ๊ธฐ์ฌ๋์ด ์ํ๋ ์์ ์์๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด
order๊ฐ ์ฃผ์ด์ก์ ๋, ์์ฌ๊ฐ ๋ช ๊ฐ์ ์์๋ฅผ ์ค์ ์ ์๋์ง return ํ๋ solution ํจ์๋ฅผ ์์ฑํ์ธ์.์ ํ์ฌํญ
- 1 โค
order์ ๊ธธ์ด โค 1,000,000
order๋ 1์ด์order์ ๊ธธ์ด ์ดํ์ ๋ชจ๋ ์ ์๊ฐ ํ๋ฒ์ฉ ๋ฑ์ฅํฉ๋๋ค.
order[i]๋ ๊ธฐ์กด์ ์ปจํ ์ด๋ ๋ฒจํธ์order[i]๋ฒ์งธ ์์๋ฅผ i+1๋ฒ์งธ๋ก ํธ๋ญ์ ์ค์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
์ ์ถ๋ ฅ ์
order | result |
[4, 3, 1, 2, 5] | 2 |
[5, 4, 3, 2, 1] | 5 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
- ๋ชจ๋ ์์๋ฅผ ๋ณด์กฐ ์ปจํ ์ด๋ ๋ฒจํธ์ ๋ชจ๋ ๋ฃ๊ณ , ์ญ์์ผ๋ก ํ๋์ฉ ๋นผ์ ํธ๋ญ์ ์ฃ์ต๋๋ค.
solution.java
import java.util.*;
class Solution {
public int solution(int[] order) {
Stack<Integer> stack = new Stack<>(); // ๋ณด์กฐ ์ปจํ
์ด๋ ๋ฒจํธ
int currentBox = 1; // ์ปจํ
์ด๋ ๋ฒจํธ์ ๋ค์ ์์
int loadedCount = 0; // ์ฑ๊ณต์ ์ผ๋ก ์ค์ ์์ ์
for (int targetBox : order) {
// ์ํ๋ ์์์ ๋๋ฌํ๊ฑฐ๋ ๋ค ๊บผ๋ผ ๋๊น์ง ๋ฐ๋ณต
while (currentBox <= order.length && currentBox < targetBox) {
stack.push(currentBox);
currentBox++;
}
// ํ์ฌ ์ปจํ
์ด๋ ๋ฒจํธ์ ์์๊ฐ ์ํ๋ ์์์ธ ๊ฒฝ์ฐ ์ค๋๋ค
if (currentBox == targetBox) {
loadedCount++;
currentBox++;
}
// ์๋๋ผ๋ฉด ์ํ๋ ์์๊ฐ ๋ณด์กฐ ์คํ์ ์๋จ์ ์๋์ง ํ์ธ
else if (!stack.isEmpty() && stack.peek() == targetBox) {
stack.pop();
loadedCount++;
}
// ๋ ์กฐ๊ฑด ๋ชจ๋ ์ถฉ์กฑ๋์ง ์์ผ๋ฉด ์์๋ฅผ ์ค์ ์ ์์
else {
break;
}
}
return loadedCount;
}
}ํต์ฌ ํค์๋
- ์ปจํ
์ด๋ ๋ฒจํธ์
ํ์ฌ ์์๊ฐ order ๋ฐฐ์ด์๋ชฉํ ์์๋ณด๋ค ์์ผ๋ฉด๋ชฉํ ์์์ ๋๋ฌํ ๋๊น์ง ์คํ์ ๋ฐ์ด ๋ฃ๋๋ค.
- ์คํ ์๋จ์ ์๋ ์์๊ฐ ์ํ๋ ์์์ธ ๊ฒฝ์ฐ ์คํ์์ ํด๋น ์์๋ฅผ
popํ๊ณ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
- ๋ฒจํธ๋ ์คํ์ ์ํ๋ ์์๊ฐ ์์ผ๋ฉด ์ ์ฌ๋ฅผ ์ค์งํ๋ค.
๊ฒฐ๋ก !
์คํ์ ์ด์ฉํด์ ํด๋น ๋ฌธ์ ๋ฅผ ํ ์ ์์๋ค.
Share article