CodingTest/Java
Lv.2 : ์ฃผ์๊ฐ๊ฒฉ
Soom_1n
2023. 11. 23. 09:34
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ ๋ ฅ ๋ ๊ฐ๊ฒฉ ๋ฐฐ์ด์์ ๊ฐ ์ธ๋ฑ์ค์ ๊ฐ๊ฒฉ์ด ๋ช ์ด๋์ ๋จ์ด์ง์ง ์์๋์ง ๋ฐํํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ์คํ์ ๊ฐ ๊ฐ๊ฒฉ ๋ณ ์ธ๋ฑ์ค๋ฅผ ์์๋๋ก ์ ์ฅํ๋ค.
- ํ์ฌ ์คํ์ ์ ์ฅ ๋ ์ธ๋ฑ์ค์ ๊ฐ๊ฒฉ์ด ํ์ฌ ์ธ๋ฑ์ค ๊ฐ๊ฒฉ๋ณด๋ค ํฌ๋ค๋ฉด ๊ฐ๊ฒฉ์ด ๋จ์ด์ง ๊ฒ์ด๋ฏ๋ก, ์คํ์์ ์ธ๋ฑ์ค๋ฅผ ๊บผ๋ด๊ณ ์ง๋๊ฐ ์ด๋ฅผ ์ ์ฅํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.Stack;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < prices.length; i++) {
while (!stack.isEmpty() && prices[stack.peek()] > prices[i])
answer[stack.peek()] = i - stack.pop();
stack.push(i);
}
while (!stack.isEmpty())
answer[stack.peek()] = prices.length - 1 - stack.pop();
return answer;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ฃผ์ด์ง ์ฃผ์ ๊ฐ๊ฒฉ ๋ฐฐ์ด prices์ ์์๋ฅผ ํ๋์ฉ ํ์ธํ๋ฉฐ ๊ณ์ฐํ๋ค.
- ์คํ์ ์ธ๋ฑ์ค ๊ฐ๋ณด๋ค ํ์ฌ ์ธ๋ฑ์ค์ ๊ฐ์ด ๋ ์๋ค๋ฉด, ์คํ์ ์ธ๋ฑ์ค๋ฅผ ๊บผ๋ด ๊ฒฝ๊ณผ๋ ์๊ฐ์ ์ ๋ต ๋ฐฐ์ด answer์ ์ ์ฅํ๋ค.
- ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์คํ์ ์ ์ฅํ๋ค.
- ๋ชจ๋ ๋ฐ๋ณต์ด ๋๋ฌ์ผ๋ฉด, ์คํ์ ๋จ์ ๊ฐ๋ค์ ์ ๋ฆฌํด์ค๋ค.
- ํ์ฌ ์๊ฐ์ prices์ ๊ธธ์ด๋ก ๊ณ์ฐํด์ ๊ฒฝ๊ณผ๋ ์๊ฐ์ ์ ์ฅํ๋ค.
- answer์ ๋ฐํํ๋ค.
๐ธ end ๐ธ
- ๊ฐ๋จํ ์คํ๋ฌธ์ ์๋ค. ๊ฐ์ ์ ์ฅํ ๊น ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ ๊น ์ ๋๋ง ๊ณ ๋ฏผ์ด ๋๋ ๊ฒ ๊ฐ๋ค.
728x90