🌞Algorithm/🔥Baekjoon

[Baekjoon] 10489_Even Up Solitaire

뿌야._. 2025. 8. 21. 10:19
문제(출처: https://www.acmicpc.net/problem/10489)

< Even Up Solitaire >

 

문제 풀이 

 

stack을 사용하여 인접하는 두 개의 카드 합이 짝수인지 판단한다. 예제가 다음과 같다면 다음 과정을 거친다.

10
1 3 3 4 2 4 1 3 7 1

 

stack : 1

stack :                     -> (3+1)은 짝수이므로 1 제거

stack : 3

stack : 3 4

stack : 3                  -> (4+2)는 짝수이므로 4 제거

stack : 3 4

stack : 3 4 1

stack : 3 4               -> (1+3)은 짝수이므로 1 제거

stack : 3 4 7

stack : 3 4               -> (7+1)은 짝수이므로 7 제거

 

my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class _10489_ { // Even Up Solitaire

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		st = new StringTokenizer(bf.readLine());

		Stack<Integer> stack = new Stack<>();

		for (int i = 0; i < n; i++) {
			int num = Integer.parseInt(st.nextToken());

			if (stack.isEmpty() || (stack.peek() + num) % 2 == 1) {
				stack.add(num);
			} else {
				stack.pop();
			}
		}
		System.out.println(stack.size());
	}
}
변수)
n : 카드 수
stack : Stack <Integer>
num : 카드 값

 

카드 수를 입력받아 카드 수만큼 다음 과정을 거친다.

 

1) stack이 비어있거나 stack의 peek값과 입력된 카드 값의 합이 홀수라면 stack에 카드 값 저장

2) 합이 짝수라면 stack에서 제거

 

최종 stack의 크기를 출력한다.