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

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

[Baekjoon/λ°±μ€€][2292][C/C++] λ²Œμ§‘

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

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

0. κ°œμš”

λ²Œμ§‘μ„ κ°€μž₯ν•œ μˆ˜μ—΄ 문제. μˆ˜μ—΄μ˜ ν˜•μ„± 원리λ₯Ό λΉ λ₯΄κ²Œ νŒŒμ•…ν•˜λŠ” 것이 문제의 ν‚€ν¬μΈνŠΈλ‹€.

1. 문제

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

 

2292번: λ²Œμ§‘

μœ„μ˜ κ·Έλ¦Όκ³Ό 같이 μœ‘κ°ν˜•μœΌλ‘œ 이루어진 λ²Œμ§‘μ΄ μžˆλ‹€. κ·Έλ¦Όμ—μ„œ λ³΄λŠ” 바와 같이 μ€‘μ•™μ˜ λ°© 1λΆ€ν„° μ‹œμž‘ν•΄μ„œ μ΄μ›ƒν•˜λŠ” 방에 λŒμ•„κ°€λ©΄μ„œ 1μ”© μ¦κ°€ν•˜λŠ” 번호λ₯Ό μ£Όμ†Œλ‘œ 맀길 수 μžˆλ‹€. 숫자 N이 μ£Όμ–΄μ‘Œ

www.acmicpc.net

[문제]

[Baekjoon/λ°±μ€€][2292][C/C++] λ²Œμ§‘
[Baekjoon/λ°±μ€€][2292][C/C++] λ²Œμ§‘

μœ„μ˜ κ·Έλ¦Όκ³Ό 같이 μœ‘κ°ν˜•μœΌλ‘œ 이루어진 λ²Œμ§‘μ΄ μžˆλ‹€. κ·Έλ¦Όμ—μ„œ λ³΄λŠ” 바와 같이 μ€‘μ•™μ˜ λ°© 1λΆ€ν„° μ‹œμž‘ν•΄μ„œ μ΄μ›ƒν•˜λŠ” 방에 λŒμ•„κ°€λ©΄μ„œ 1μ”© μ¦κ°€ν•˜λŠ” 번호λ₯Ό μ£Όμ†Œλ‘œ 맀길 수 μžˆλ‹€. 숫자 N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, λ²Œμ§‘μ˜ 쀑앙 1μ—μ„œ N번 λ°©κΉŒμ§€ μ΅œμ†Œ 개수의 방을 μ§€λ‚˜μ„œ 갈 λ•Œ λͺ‡ 개의 방을 μ§€λ‚˜κ°€λŠ”μ§€(μ‹œμž‘κ³Ό 끝을 ν¬ν•¨ν•˜μ—¬)λ₯Ό κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 예λ₯Ό λ“€λ©΄, 13κΉŒμ§€λŠ” 3개, 58κΉŒμ§€λŠ” 5개λ₯Ό μ§€λ‚œλ‹€.

[μž…λ ₯]

첫째 쀄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진닀.

[좜λ ₯]

μž…λ ₯으둜 주어진 λ°©κΉŒμ§€ μ΅œμ†Œ 개수의 방을 μ§€λ‚˜μ„œ 갈 λ•Œ λͺ‡ 개의 방을 μ§€λ‚˜λŠ”μ§€ 좜λ ₯ν•œλ‹€.

[예제 μž…λ ₯ 1]

13

[예제 좜λ ₯ 1]

3

2. 풀이

[1] & [2, 3, 4, 5, 6, 7] & [8, 9, 10, ..., 19] & [20, 21, 22, ..., 37] & ...

μ΄λ ‡κ²Œ 각각이 1μ„ΈνŠΈμ΄λ‹€. 각 μ„ΈνŠΈμ˜ 끝 수만 비ꡐ해보면,

1 -> 7 -> 19 -> 37 -> 61
  +6   +12   +18   +24  

μœ„μ™€ 같은 μ›λ¦¬λ‘œ μˆ˜μ—΄μ΄ κ΅¬μ„±λœλ‹€. 정리해보면

숫자 = num μ„ΈνŠΈ = level
<= 1 1
2 <= && <= 7 2
8 <= && <= 19 3
20 <= && <= 37 4
... ...

3. μ½”λ“œ

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

int main(int argc, char* argv[]) {
	int N; scanf("%d", &N);

	int num, level;
	for (num = 1, level = 1; num < N; num += (6 * level++)) {}

	printf("%d", level);

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