π•ƒπ•¦π•„π•šπ•£

γ€ŒβŒ¨οΈα΄„s」PS/λ°±μ€€_μˆ˜ν•™&κ΅¬ν˜„

[Baekjoon/λ°±μ€€][5597][C/C++] 과제 μ•ˆ λ‚΄μ‹  λΆ„..?

by λ£¨λ°€π•ƒπ•¦π•„π•šπ•£2023. 1. 19.
728x90
λ°˜μ‘ν˜•
γ€Žλͺ©μ°¨γ€
0. κ°œμš”

1. 문제
2. 풀이
3. μ½”λ“œ

0. κ°œμš”

1차원 배열에 λŒ€ν•œ μ΄ν•΄λ§Œ ν•˜λ©΄ μ‰½κ²Œ ν’€λ¦¬λŠ” 문제. 브둠즈5 문제라 κΈ΄ μ„€λͺ…은 ν•„μš” 없을 λ“―ν•˜λ‹€.

1. 문제

https://www.acmicpc.net/problem/5597

 

5597번: 과제 μ•ˆ λ‚΄μ‹  λΆ„..?

XλŒ€ν•™ Mκ΅μˆ˜λ‹˜μ€ ν”„λ‘œκ·Έλž˜λ° μˆ˜μ—…μ„ 맑고 μžˆλ‹€. ꡐ싀엔 학생이 30λͺ…이 μžˆλŠ”λ°, 학생 λͺ…λΆ€μ—” 각 ν•™μƒλ³„λ‘œ 1λ²ˆλΆ€ν„° 30λ²ˆκΉŒμ§€ μΆœμ„λ²ˆν˜Έκ°€ λΆ™μ–΄ μžˆλ‹€. κ΅μˆ˜λ‹˜μ΄ λ‚΄μ€€ νŠΉλ³„κ³Όμ œλ₯Ό 28λͺ…이 μ œμΆœν–ˆλŠ”λ°,

www.acmicpc.net

[문제]

XλŒ€ν•™ Mκ΅μˆ˜λ‹˜μ€ ν”„λ‘œκ·Έλž˜λ° μˆ˜μ—…μ„ 맑고 μžˆλ‹€. ꡐ싀엔 학생이 30λͺ…이 μžˆλŠ”λ°, 학생 λͺ…λΆ€μ—” 각 ν•™μƒλ³„λ‘œ 1λ²ˆλΆ€ν„° 30λ²ˆκΉŒμ§€ μΆœμ„λ²ˆν˜Έκ°€ λΆ™μ–΄ μžˆλ‹€.

κ΅μˆ˜λ‹˜μ΄ λ‚΄μ€€ νŠΉλ³„κ³Όμ œλ₯Ό 28λͺ…이 μ œμΆœν–ˆλŠ”λ°, κ·Έ μ€‘μ—μ„œ μ œμΆœ μ•ˆ ν•œ 학생 2λͺ…μ˜ μΆœμ„λ²ˆν˜Έλ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

[μž…λ ₯]

μž…λ ₯은 총 28μ€„λ‘œ 각 제좜자(학생)의 μΆœμ„λ²ˆν˜Έ n(1 ≤ n ≤ 30)κ°€ ν•œ 쀄에 ν•˜λ‚˜μ”© 주어진닀. μΆœμ„λ²ˆν˜Έμ— 쀑볡은 μ—†λ‹€.

[좜λ ₯]

좜λ ₯은 2쀄이닀. 1번째 쀄엔 μ œμΆœν•˜μ§€ μ•Šμ€ ν•™μƒμ˜ μΆœμ„λ²ˆν˜Έ 쀑 κ°€μž₯ μž‘μ€ 것을 좜λ ₯ν•˜κ³ , 2번째 쀄에선 κ·Έ λ‹€μŒ μΆœμ„λ²ˆν˜Έλ₯Ό 좜λ ₯ν•œλ‹€.

[예제 μž…λ ₯ 1]

3
1
4
5
7
9
6
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

[예제 좜λ ₯ 1]

2
8

[예제 μž…λ ₯ 2]

9
30
6
12
10
20
21
11
7
5
28
4
18
29
17
19
27
13
16
26
14
23
22
15
3
1
24
25

[예제 좜λ ₯ 2]

2
8

2. 풀이

크기가 31인 배열을 μ„ μ–Έν•œλ‹€. (인덱슀 번호λ₯Ό 30κΉŒμ§€ ν™œμš©ν•˜κΈ° μœ„ν•¨.)

이후, λ°°μ—΄μ˜ 인덱슀 값을 ν•™μƒμ˜ μΆœμ„λ²ˆν˜Έλ‘œ ν™œμš©ν•˜μ—¬,

1번 학생은 1번 인덱슀, 2번 학생은 2번 인덱슀, ... 에 λ°°μ •ν•œλ‹€. (0번 μΈλ±μŠ€λŠ” ν™œμš©ν•˜μ§€ μ•ŠμŒ.)

λ°°μ—΄μ˜ 기본값을 0=false둜 μ΄ˆκΈ°ν™”ν•œ ν›„, μΆœμ„ν•œ ν•™μƒμ˜ 값을 true둜 λ³€κ²½ν•œλ‹€.

μ΄λ ‡κ²Œ ν•˜λ©΄, 값이 false둜 λ‚¨μ•„μžˆλŠ” indexκ°€ μΆœμ„μ„ ν•˜μ§€ μ•Šμ€ ν•™μƒμ˜ λ²ˆν˜Έκ°€ λœλ‹€.

3. μ½”λ“œ

#pragma warning (disable:4996)
#include <stdio.h>
#include <stdbool.h>

int main(int argc, char* argv[]) {
	bool flag[31] = {}; //0=false둜 μ΄ˆκΈ°ν™”

	for (int i = 0; i < 28; i++) {
		int tmp; scanf("%d", &tmp);
		flag[tmp] = true; 
	}
	/* μž…λ ₯값에 ν•΄λ‹Ήν•˜λŠ” 인덱슀의 값을 true둜 λ³€κ²½. */

	for (int i = 1; i <= 30; i++)
		if (flag[i] == false)
			printf("%d\n", i);
	/* μž…λ ₯λ˜μ§€ μ•Šμ€ 값은 μ—¬μ „νžˆ false둜 λ‚¨μ•„μžˆλ‹€. */

	return 0;
}
728x90
λ°˜μ‘ν˜•