🌞Algorithm/πŸ”₯Baekjoon

[Baekjoon] 19622_νšŒμ˜μ‹€ λ°°μ • 3

λΏŒμ•Ό._. 2026. 2. 12. 17:13
문제(좜처: https://www.acmicpc.net/problem/19622)

< νšŒμ˜μ‹€ λ°°μ • 3 >

 

문제 풀이 

 

μž„μ˜μ˜ 회의 kλŠ” k-1κ³Ό k+1 νšŒμ˜μ™€ μ‹œκ°„μ΄ 겹치고 λ‹€λ₯Έ νšŒμ˜λ“€μ€ κ²ΉμΉ˜μ§€ μ•ŠμœΌλ―€λ‘œ(k-2 회의 + k 회의, k-1 회의) 쀑에 μ΅œλŒ“κ°’μ„ μ„ νƒν•œλ‹€.

 

my solution (Java)

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

public class _19622_ { // νšŒμ˜μ‹€ λ°°μ • 3
	static class Info {
		int start;
		int end;
		int num;

		public Info(int start, int end, int num) {
			this.start = start;
			this.end = end;
			this.num = num;
		}
	}

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

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

		Info arr[] = new Info[n];
		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());
			arr[i] = new Info(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()),
					Integer.parseInt(st.nextToken()));
		}

		int dp[] = new int[n];
		dp[0] = arr[0].num;

		if (n > 1) {
			dp[1] = Math.max(dp[0], arr[1].num);
		}

		for (int i = 2; i < n; i++) {
			dp[i] = Math.max(dp[i - 2] + arr[i].num, dp[i - 1]);
		}

		int result = 0;
		for (int i = 0; i < n; i++) {
			result = Math.max(result, dp[i]);
		}

		System.out.println(result);
	}
}
λ³€μˆ˜)
n : 회의의 수
arr : 회의 정보λ₯Ό μ €μž₯ν•˜λŠ” λ°°μ—΄
dp : 회의λ₯Ό μ§„ν–‰ν•  수 μžˆλŠ” μ΅œλŒ€ 인원을 κ΅¬ν•˜λŠ” λ°°μ—΄
result : 회의λ₯Ό μ§„ν–‰ν•  수 μžˆλŠ” μ΅œλŒ€ 인원

 

회의의 수λ₯Ό μž…λ ₯λ°›λŠ”λ‹€. 회의의 수만큼 회의 정보λ₯Ό μž…λ ₯λ°›μ•„ 배열에 μ €μž₯ν•œλ‹€. dp의 0번째λ₯Ό 0번째 νšŒμ˜μ— μ°Έμ„ν•˜λŠ” μΈμ›μœΌλ‘œ, 1번째λ₯Ό 0λ²ˆμ§Έμ™€ 1번째 νšŒμ˜μ— μ°Έμ„ν•˜λŠ” 인원 쀑 μ΅œλŒ“κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”ν•œλ‹€. λ‚˜λ¨Έμ§€λ₯Ό νƒμƒ‰ν•˜λ©° ν˜„μž¬ 회의λ₯Ό μ„ νƒν•œλ‹€λ©΄ dp[i-2]+ν˜„μž¬ 회의 참석 인원, ν˜„μž¬ 회의λ₯Ό μ„ νƒν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ dp[i-1] μ΄λ―€λ‘œ λ‘˜ 쀑에 μ΅œλŒ“κ°’μœΌλ‘œ μ €μž₯ν•œλ‹€. 

 

μ΅œμ’… dpλ₯Ό νƒμƒ‰ν•˜λ©° μ΅œλŒ“κ°’μ„ 좜λ ₯ν•œλ‹€.