๐Ÿ“Œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„ :: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 2:: ์Šคํƒ&ํ - ์ฃผ์‹๊ฐ€๊ฒฉ๐Ÿ‘€

Dev-Oยท2022๋…„ 2์›” 3์ผ
0

CodingTest

๋ชฉ๋ก ๋ณด๊ธฐ
8/18

๋ฌธ์ œ

ํ•ด์„ค

๋ฐฐ์—ด์— ์ฃผ์‹๊ฐ€๊ฒฉ์ด ๋‹ด๊ฒจ์ ธ์„œ ์ฃผ์–ด์ง„๋‹ค. ์ธ๋ฑ์Šค ํ•˜๋‚˜์ฐจ์ด๋ฅผ 1์ดˆ์ฐจ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋ช‡์ดˆ๋™์•ˆ ์•ˆ๋–จ์–ด์ง€๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

  1. ์Šคํƒ์—๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.
  2. ์ฃผ์‹๊ฐ€๊ฒฉ ๋ฐฐ์—ด์˜ ์ˆœ๋ฒˆ์€ ์Šคํƒ์˜ ์ˆœ๋ฒˆ๋ณด๋‹ค ํ•˜๋‚˜ ์•ž์„œ๋‚˜๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  3. ์Šคํƒ์˜ ์ˆœ๋ฒˆ๊ณผ ๋ฐฐ์—ด์˜ ์ˆœ๋ฒˆ์„ ๋น„๊ตํ•ด์ค๋‹ˆ๋‹ค. ์Šคํƒ์˜ ์ˆœ๋ฒˆ์ด ๋”ํฌ๋ฉด ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์กŒ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
  4. ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ์ˆœ๋ฒˆ๊ณผ ์Šคํƒ์ˆœ๋ฒˆ๊ณผ์˜ ์ฐจ์ด๋ฅผ ๋‹ต ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.
  5. ๊ทธ๋ ‡๊ฒŒ ์Šคํƒ์ˆœ๋ฒˆ์„ pop()ํ•˜๊ณ  ๊ทธ ์Šคํƒ๊ณผ 2,3,4๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  6. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€๊ฒฉ์ด ๋–จ์–ด์ง€์ง€ ์•Š์€ ์ˆœ๋ฒˆ์€ ๋๊นŒ์ง€ ๊ฐ€๊ฒฉ์ด ์•ˆ๋–จ์–ด์ง„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊บผ๋‚ด์„œ ๊ณ„์‚ฐํ•ด์ฃผ๋ฉด ๋!

์ฝ”๋“œ

31 lines (25 sloc)  954 Bytes
   
package stack_queue;

import java.util.Stack;

public class ProLv2_StockPrice {//์ฃผ์‹๊ฐ€๊ฒฉ

	public static void main(String[] args) {
		int[] prices = {5,3,2,2,5,4,6};
		int[] answer = solution(prices);
		for(int i = 0; i< answer.length ; i++) System.out.print(answer[i]+ " ");
	}
	
	public static int[] solution(int[] prices) {
		int[] answer = new int[prices.length];
		Stack<Integer> stack = new Stack<Integer>();//์Šคํƒ์ƒ์„ฑ
		
		for(int i = 0; i < prices.length; i++) {//๋ฐฐ์—ด์ „์ฒด๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.
			while(!stack.isEmpty() && prices[i] < prices[stack.peek()]) {//์Šคํƒ์ด ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด์„œ ๋‹ค์Œ๊ฒƒ๋ณด๋‹ค ์ „๊ฒƒ์ด ํด๋•Œ(์ฃผ์‹๊ฐ€ ์ƒ์Šน) 
				answer[stack.peek()] = i - stack.peek();//answer[2]=1;
				stack.pop();//0,1
			}
			stack.push(i);//0,1,2 ๋“ค์–ด๊ฐ€๊ณ  0,1,3,4
		}
		while(!stack.isEmpty()) {
			answer[stack.peek()] = prices.length - stack.peek() -1;//5 - 4 - 1, 0,1,1,3,4
			stack.pop();
		}
		return answer;
	}
	
}
profile
Being Outstanding needs Understanding๐Ÿš€

0๊ฐœ์˜ ๋Œ“๊ธ€