๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 15287_Easy Quest

๋ฟŒ์•ผ._. 2026. 3. 30. 15:37
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/15287)

< Easy Quest >

 

๋ฌธ์ œ ํ’€์ด 

 

0 ์ด์ƒ์ผ ๋•Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•ด ๋‘๊ณ  ์Œ์ˆ˜์ผ ๋•Œ |์Œ์ˆ˜| ๋˜๋Š” 0์„ ํ™œ์šฉํ•ด์„œ ์ ์„ ๋ฌผ๋ฆฌ์นœ๋‹ค. ์ด๋•Œ 0์„ ์–ด๋–ค ํƒ€์ž…์˜ ์•„์ดํ…œ์„ ์š”์ฒญํ–ˆ๋Š”์ง€ ์ €์žฅํ•ด ๋‘”๋‹ค. 

 

my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class _15287_ { // Easy Quest

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

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

		int arr[] = new int[1001];
		ArrayList<Integer> result = new ArrayList<>();
		boolean flag = false;

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

			if (num >= 0) {
				arr[num] += 1;
			} else {
				if (arr[-num] > 0) {
					arr[-num] -= 1;
				} else if (arr[0] > 0) {
					arr[0] -= 1;
					result.add(-num);
				} else {
					flag = true;
					break;
				}
			}
		}

		if (flag) {
			bw.write("No");
		} else {
			bw.write("Yes\n");

			for (int x : result) {
				bw.write(x + " ");
			}

			while (arr[0] > 0) {
				arr[0] -= 1;
				bw.write("1 ");
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ์ •์ˆ˜ ๊ฐœ์ˆ˜
arr : 0 ์ด์ƒ์˜ ๊ฐ’ ๊ฐœ์ˆ˜
result : ์œ ๋‹ˆ์ฝ˜ ๊ฐ’
flag : ์  ๋ฌผ๋ฆฌ์นจ ์—ฌ๋ถ€
num : ์ •์ˆ˜ 

 

์ •์ˆ˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ๋’ค ์ •์ˆ˜ ๊ฐœ์ˆ˜๋งŒํผ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. 0 ์ด์ƒ์ด๋ผ๋ฉด ๋ฐฐ์—ด์— +1 ํ•œ๋‹ค. ์Œ์ˆ˜๋ผ๋ฉด ๋จผ์ € ๋ฐฐ์—ด์— (-์ •์ˆ˜) ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๊ฐ’์ด ์žˆ๋‹ค๋ฉด -1 ํ•˜๊ณ  ๊ฐ’์ด ์—†๋‹ค๋ฉด arr[0] ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. arr[0] ๊ฐ’์ด ์žˆ๋‹ค๋ฉด -1 ํ•˜๊ณ  result์— (-์ •์ˆ˜)๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋‘˜ ๋‹ค ๊ฐ’์ด ์—†๋‹ค๋ฉด ๋ชจ๋“  ์ ์„ ๋ฌผ๋ฆฌ์น˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ No๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ชจ๋“  ์ ์„ ๋ฌผ๋ฆฌ์น˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด Yes๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  result ๊ฐ’๋“ค๋„ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋•Œ, ์•„์ง arr[0] ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๊ทธ ๊ฐ’๋งŒํผ 1์„ ์ถœ๋ ฅํ•œ๋‹ค. 



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 30337_Linas ir mandarinai  (0) 2026.04.01
[Baekjoon] 15407_How to Eat at a Buffet  (0) 2026.03.31
[Baekjoon] 9834_Card  (0) 2026.03.25
[Baekjoon] 11270_Disastrous Downtime  (0) 2026.03.24
[Baekjoon] 9780_Range Sum Query  (0) 2026.03.23