๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[SW Expert Academy] - (D3)8931. ์ œ๋กœ(Stack)

by ์ฃผ๋ฐœ2 2020. 7. 12.
๋ฐ˜์‘ํ˜•

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW5jBWLq7jwDFATQ&categoryId=AW5jBWLq7jwDFATQ&categoryType=CODE

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com

์ฝ”๋“œ

import java.util.Scanner;
import java.util.Stack;

public class Solution {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int t = scan.nextInt();
		for(int tc=1; tc<=t; tc++) {
			int K = scan.nextInt();
			Stack<Integer> stack = new Stack<>();
			int sum = 0;
			
			for(int i=0; i<K; i++) {
				int num = scan.nextInt();
				
				// 0์ผ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ˆ˜๋ฅผ ๋นผ๊ณ , 0์ด ์•„๋‹๊ฒฝ์šฐ ์Šคํƒ์— ๋„ฃ๊ธฐ
				if(num == 0) {
					stack.pop();
				} else {
					stack.push(num);
				}
			}
			
			// ์Šคํƒ์˜ ๋ชจ๋“  ์š”์†Œ๋“ค ๋”ํ•˜๊ธฐ.
			while(!stack.isEmpty()) {
				sum += stack.pop();
			}
			System.out.println("#" + tc + " " + sum);
		}
		
		scan.close();
	}

}

ํ’€์ด

๋ฌธ์ œ์—์„œ ํ•ต์‹ฌ๋ถ€๋ถ„์€ ๋‹ค์Œ์ด๋‹ค.

 

0์„ ์™ธ์ณ์„œ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ผ๋˜ ์ˆ˜๋ฅผ ์ง€์šด๋‹ค.

 

์œ„ ๋ฌธ์žฅ์œผ๋กœ ์Šคํƒ์„ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œ์—์„œ ์Šคํƒ์— ๋น„์–ด์žˆ๋Š” ์ƒํƒœ์—์„œ 0์ด์˜ค๋Š” ์ƒํ™ฉ์€ ์•ˆ์˜ค๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๋”ฐ๋ผ์„œ 0์ผ๋•Œ๋Š” ์ตœ๊ทผ๊ฐ’์„ ์ง€์šฐ๊ณ (pop), 0์ด ์•„๋‹๋•Œ๋Š” ์Šคํƒ์— ๋„ฃ๋Š”๋‹ค(push)

๊ทธ ํ›„ ์Šคํƒ์˜ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ๋”ํ•˜๋ฉด ๋œ๋‹ค.

 

์ €๋ฒˆ์—๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋Š”๋ฐ, ArrayList๋กœ ํ’€๊ณ  ์š”์ƒํ•˜๊ฒŒ ํ’€์–ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€

๐Ÿ”HALO