๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 21149_Unread Messages

๋ฟŒ์•ผ._. 2025. 11. 3. 14:56
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/21149)

< Unread Messages >

 

๋ฌธ์ œ ํ’€์ด 

 

HashMap์— ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ ์‹œ๊ฐ„์„ ์ €์žฅํ•œ๋‹ค. ํ˜„์žฌ ์‹œ๊ฐ„์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ ์‹œ๊ฐ„์„ ๋นผ๋ฉด ๊ทธ ์‚ฌ๋žŒ์˜ ์ฝ์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

* ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์ฝ์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€์˜ ์ดํ•ฉ์€ long ๋ฒ”์œ„์ด๋‹ค.

 

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 _21149_ { // Unread Messages

	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 = new StringTokenizer(bf.readLine());

		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());

		long sum = 0;
		HashMap<Integer, Integer> map = new HashMap<>();
		for (int i = 0; i < m; i++) {
			int s = Integer.parseInt(bf.readLine());

			if (map.containsKey(s)) {
				sum -= (i - map.get(s) - 1);
			} else {
				sum -= i;
			}
			map.put(s, i);

			sum += (n - 1);

			bw.write(sum + "\n");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n, m : ๊ทธ๋ฃน์˜ ์ด ์ธ์›์ˆ˜, ์ „์†ก๋œ ๋ฉ”์‹œ์ง€์˜ ๊ฐœ์ˆ˜
sum : ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์ฝ์ง€ ์•Š์€ ๋ฉ”์‹œ์ง€์˜ ์ดํ•ฉ
map : HashMap <์‚ฌ๋žŒ ๋ฒˆํ˜ธ, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ ์‹œ๊ฐ„>

 

๊ทธ๋ฃน์˜ ์ด ์ธ์› ์ˆ˜์™€ ์ „์†ก๋œ ๋ฉ”์‹œ์ง€์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ „์†ก๋œ ๋ฉ”์‹œ์ง€์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

๊ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ ์‚ฌ๋žŒ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๊ทธ ์‚ฌ๋žŒ์ด HashMap์— key๊ฐ’์œผ๋กœ ์žˆ๋‹ค๋ฉด sum - ( ํ˜„์žฌ ์‹œ๊ฐ„ - ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ ์‹œ๊ฐ„ - 1)์„ ํ•˜๊ณ , key ๊ฐ’์œผ๋กœ ์—†๋‹ค๋ฉด sum -ํ˜„์žฌ์‹œ๊ฐ„์„ ํ•œ ํ›„ HashMap์˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ ์‚ฌ๋žŒ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ•˜๋‚˜์”ฉ ์Œ“์˜€์œผ๋ฏ€๋กœ sum + (n-1)์„ ํ•œ ํ›„ sum ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.



 

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

[Baekjoon] 6379_Scramble Sort  (0) 2025.11.05
[Baekjoon] 29882_Ranking  (0) 2025.11.04
[Baekjoon] 5741_Soccer League  (0) 2025.10.31
[Baekjoon] 9794_Another Word Sorting  (0) 2025.10.30
[Baekjoon] 4676_Haiku Review  (0) 2025.10.29