๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 5092_Air Old Zeeland

๋ฟŒ์•ผ._. 2025. 2. 27. 17:00
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/5092)

< Air Old Zeeland >

 

๋ฌธ์ œ ํ’€์ด 

 

HashMap์— key ๊ฐ’์œผ๋กœ ์ƒํ’ˆ๋ช…, value๋กœ [ํฌ์ธํŠธ ์ˆ˜, ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ผ์ˆ˜]๋ฅผ ์ €์žฅํ•œ๋‹ค.

๊ฐ ๊ณ ๊ฐ์ด ์›ํ•˜๋Š” ์ƒํ’ˆ์ด ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ผ์ˆ˜ ์•ˆ์— ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๊ตฌ๋งคํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

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.HashMap;
import java.util.StringTokenizer;

public class _5092_ { // Air Old Zeeland

	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 = 0;
		while ((n = Integer.parseInt(bf.readLine())) != 0) {
			HashMap<String, int[]> map = new HashMap<>();
			for (int i = 0; i < n; i++) {
				st = new StringTokenizer(bf.readLine());

				map.put(st.nextToken(),
						new int[] { Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) });
			}

			int c = Integer.parseInt(bf.readLine());
			int cnt = 0;

			for (int i = 0; i < c; i++) {
				st = new StringTokenizer(bf.readLine());

				int number = Integer.parseInt(st.nextToken());
				int p = Integer.parseInt(st.nextToken());
				int m = Integer.parseInt(st.nextToken());

				int value = 0;
				boolean flag = false;
				for (int j = 0; j < p; j++) {
					String product = bf.readLine();

					if (m >= map.get(product)[1]) {
						value += map.get(product)[0];
					} else {
						flag = true;
					}
				}
				bw.write(number + " " + value);
				if (flag) {
					cnt += 1;
					bw.write(" *");
				}
				bw.write("\n");
			}
			bw.write("Number of discontented customers is: " + cnt + "\n");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ์ƒํ’ˆ ์ˆ˜
map : <์ƒํ’ˆ๋ช…, [ํฌ์ธํŠธ ์ˆ˜, ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ผ์ˆ˜]>
c : ๊ณ ๊ฐ ์ˆ˜
cnt : ๋ถˆ๋งŒ์กฑํ•œ ๊ณ ๊ฐ ์ˆ˜
number, p, m : ๊ณ ๊ฐ ๋ฒˆํ˜ธ, ๊ตฌ๋งคํ•˜๋ ค๋Š” ์ œํ’ˆ ์ˆ˜, ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ผ์ˆ˜
value : ๊ตฌ๋งค ๊ธˆ์•ก
flag : ๋ถˆ๋งŒ์กฑ ์—ฌ๋ถ€
product : ๊ตฌ๋งคํ•˜๋ ค๋Š” ์ƒํ’ˆ๋ช…

 

์ƒํ’ˆ ์ˆ˜๊ฐ€ 0์ด ์•„๋‹ ๋•Œ๊นŒ์ง€ ์ž…๋ ฅ๋ฐ›์œผ๋ฉฐ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ์ƒํ’ˆ ์ˆ˜๋งŒํผ ์ƒํ’ˆ๋ช…๊ณผ ํฌ์ธํŠธ ์ˆ˜, ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ผ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ HashMap์— ์ €์žฅ

2) ๊ณ ๊ฐ ์ˆ˜ ์ž…๋ ฅ

3) ๊ณ ๊ฐ ์ˆ˜๋งŒํผ ๊ณ ๊ฐ ๋ฒˆํ˜ธ, ๊ตฌ๋งคํ•˜๋ ค๋Š” ์ œํ’ˆ ์ˆ˜, ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ผ์ˆ˜ ์ž…๋ ฅ๋ฐ›์Œ

4) ์ œํ’ˆ ์ˆ˜๋งŒํผ ์ œํ’ˆ๋ช…์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ ์ œํ’ˆ์˜ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ผ์ˆ˜๊ฐ€ ๊ธฐ๋‹ค๋ฆด  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ผ์ˆ˜ ์ดํ•˜๋ผ๋ฉด ๊ตฌ๋งค, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด flag๋ฅผ true๋กœ ์ €์žฅ

5) ๊ณ ๊ฐ ๋ฒˆํ˜ธ์™€ ๊ตฌ๋งค ๊ธˆ์•ก ์ถœ๋ ฅ

6) ๋งŒ์•ฝ ๋ถˆ๋งŒ์กฑํ•œ ๊ณ ๊ฐ์ด๋ผ๋ฉด * ์ถœ๋ ฅ

7) ์ตœ์ข… ๋ถˆ๋งŒ์กฑํ•œ ๊ณ ๊ฐ ์ˆ˜ ์ถœ๋ ฅ



 

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

[Baekjoon] 17599_Bags  (0) 2025.02.28
[Baekjoon] 8975_PJESMA  (0) 2025.02.26
[Baekjoon] 14534_String Permutation  (0) 2025.02.25
[Baekjoon] 9492_Perfect Shuffle  (0) 2025.02.24
[Baekjoon] 10469_์‚ฌ์ด ๋‚˜์œ ์—ฌ์™•๋“ค  (0) 2025.02.21