๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 31023_Hit Song

๋ฟŒ์•ผ._. 2025. 9. 24. 11:50
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/31023)

< Hit Song >

 

๋ฌธ์ œ ํ’€์ด 

 

์ „์ฒด ๋‹จ์–ด ๊ฐœ์ˆ˜์™€ ์„ ํ˜ธํ•˜๋Š” ๋‹จ์–ด์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด 75% ์ด์ƒ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

 

* ํŠน์ˆ˜ ๋ฌธ์ž๋‚˜ ๊ณต๋ฐฑ ํŒŒ์‹ฑ์„ ํ•ด์•ผ ํ•œ๋‹ค.

 

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 _31023_ { // Hit Song

	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());

		for (int i = 0; i < n; i++) {
			int p = Integer.parseInt(bf.readLine());

			ArrayList<String> list = new ArrayList<>();
			for (int j = 0; j < p; j++) {
				list.add(bf.readLine().toLowerCase());
			}

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

			int word = 0, cnt = 0;
			for (int j = 0; j < l; j++) {
				st = new StringTokenizer(bf.readLine());

				while (st.hasMoreTokens()) {
					String str = st.nextToken().toLowerCase();
					String arr[] = str.split("[^a-zA-Z]+");

					for (int k = 0; k < arr.length; k++) {
						if (arr[k].isEmpty()) {
							continue;
						}
						word += 1;
						if (list.contains(arr[k])) {
							cnt += 1;
						}
					}
				}
			}
			if ((double) cnt / word >= 0.75) {
				bw.write("It's a hit!\n");
			} else {
				bw.write("Delete immediately!\n");
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜
p : ๊ธฐ๋ถ„ ์ข‹์€ ๋‹จ์–ด์˜ ์ˆ˜
list : ๊ธฐ๋ถ„ ์ข‹์€ ๋‹จ์–ด
l : ๋…ธ๋ž˜ ๊ฐ€์‚ฌ์˜ ์ค„ ์ˆ˜
word, cnt : ๋…ธ๋ž˜ ๊ฐ€์‚ฌ ๋‹จ์–ด ์ˆ˜, ๋…ธ๋ž˜ ๊ฐ€์‚ฌ์— ํฌํ•จ๋œ ๊ธฐ๋ถ„ ์ข‹์€ ๋‹จ์–ด ์ˆ˜
str, arr : ๋…ธ๋ž˜ ๊ฐ€์‚ฌ ๋‹จ์–ด

 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜๋งŒํผ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ๊ธฐ๋ถ„ ์ข‹์€ ๋‹จ์–ด์˜ ์ˆ˜ ์ž…๋ ฅ

2) ๊ธฐ๋ถ„ ์ข‹์€ ๋‹จ์–ด์˜ ์ˆ˜๋งŒํผ ๊ธฐ๋ถ„ ์ข‹์€ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ list์— ์ €์žฅ

3) ๋…ธ๋ž˜ ๊ฐ€์‚ฌ์˜ ์ค„ ์ˆ˜ ์ž…๋ ฅ

4) ๋…ธ๋ž˜ ๊ฐ€์‚ฌ์˜ ์ค„ ์ˆ˜๋งŒํผ ๋…ธ๋ž˜ ๊ฐ€์‚ฌ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ํŠน์ˆ˜๋ฌธ์ž ๊ธฐ์ค€์œผ๋กœ ๋‹จ์–ด ๋ถ„๋ฆฌ

5) ๋น„์–ด์žˆ์ง€ ์•Š๊ณ  ๋‹จ์–ด๋ผ๋ฉด word+1 ๋ฐ ๋‹จ์–ด๊ฐ€ ๊ธฐ๋ถ„ ์ข‹์€ ๋‹จ์–ด๋ผ๋ฉด cnt+1

6) cnt/word๊ฐ€ 0.75 ์ด์ƒ์ด๋ผ๋ฉด ํžˆํŠธ๊ณก์ด๋ฏ€๋กœ "It's a hit!" ์ถœ๋ ฅ, 0.75 ์ด์ƒ์ด ์•„๋‹ˆ๋ผ๋ฉด "Delete immediately!" ์ถœ๋ ฅ



 

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

[Baekjoon] 18206_Soft Passwords  (0) 2025.09.26
[Baekjoon] 8978_VLAK  (0) 2025.09.25
[Baekjoon] 24571_Good Groups  (0) 2025.09.18
[Baekjoon] 11260_Cell Counting  (0) 2025.09.17
[Baekjoon] 11419_Olympic Parade  (0) 2025.09.15