λͺ©λ‘μ½”λ”©ν…ŒμŠ€νŠΈ μ€€λΉ„ (86)

𝘚𝘭𝘰𝘸 𝘣𝘢𝘡 𝘴𝘡𝘦𝘒π˜₯𝘺

[λ°±μ€€] 11724번: μ—°κ²° μš”μ†Œμ˜ 개수 - C++

문제 λ°©ν–₯ μ—†λŠ” κ·Έλž˜ν”„κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, μ—°κ²° μš”μ†Œ (Connected Component)의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 μ •μ μ˜ 개수 Nκ³Ό κ°„μ„ μ˜ 개수 M이 주어진닀. (1 ≀ N ≀ 1,000, 0 ≀ M ≀ NΓ—(N-1)/2) λ‘˜μ§Έ 쀄뢀터 M개의 쀄에 κ°„μ„ μ˜ μ–‘ 끝점 u와 vκ°€ 주어진닀. (1 ≀ u, v ≀ N, u β‰  v) 같은 간선은 ν•œ 번만 주어진닀. 좜λ ₯ 첫째 쀄에 μ—°κ²° μš”μ†Œμ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€. κ·Έλž˜ν”„ 탐색 μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•˜μ—¬ ν‘ΈλŠ” 문제. DFSλ₯Ό μ‚¬μš©ν•˜μ—¬ ν’€μ—ˆλ‹€. 0번 정점뢀터 NκΉŒμ§€ ν•œλ²ˆμ”© DFSλ₯Ό μ‹€ν–‰ν•˜λ˜, DFSμ—μ„œ μƒˆλ‘œ 정점을 λ°©λ¬Έν•  λ•Œ λ§ˆλ‹€ cλ₯Ό 1μ”© μ¦κ°€μ‹œμΌœ λ°©λ¬Έν•œ λ…Έλ“œμ˜ 수λ₯Ό μ„Έμ£Όκ³ , DFSκ°€ 끝났을 λ•Œ λ°©λ¬Έν•œ λ…Έλ“œμ˜ 수 cκ°€ 이전보닀 μ¦κ°€ν–ˆλ‹€λ©΄ μƒˆλ‘œμš΄ ..

[λ°±μ€€] 1260번: DFS와 BFS - C++

문제 κ·Έλž˜ν”„λ₯Ό DFS둜 νƒμƒ‰ν•œ 결과와 BFS둜 νƒμƒ‰ν•œ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 단, λ°©λ¬Έν•  수 μžˆλŠ” 정점이 μ—¬λŸ¬ 개인 κ²½μš°μ—λŠ” 정점 λ²ˆν˜Έκ°€ μž‘μ€ 것을 λ¨Όμ € λ°©λ¬Έν•˜κ³ , 더 이상 λ°©λ¬Έν•  수 μžˆλŠ” 점이 μ—†λŠ” 경우 μ’…λ£Œν•œλ‹€. 정점 λ²ˆν˜ΈλŠ” 1λ²ˆλΆ€ν„° Nλ²ˆκΉŒμ§€μ΄λ‹€. μž…λ ₯ 첫째 쀄에 μ •μ μ˜ 개수 N(1 ≀ N ≀ 1,000), κ°„μ„ μ˜ 개수 M(1 ≀ M ≀ 10,000), 탐색을 μ‹œμž‘ν•  μ •μ μ˜ 번호 Vκ°€ 주어진닀. λ‹€μŒ M개의 μ€„μ—λŠ” 간선이 μ—°κ²°ν•˜λŠ” 두 μ •μ μ˜ λ²ˆν˜Έκ°€ 주어진닀. μ–΄λ–€ 두 정점 사이에 μ—¬λŸ¬ 개의 간선이 μžˆμ„ 수 μžˆλ‹€. μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” 간선은 μ–‘λ°©ν–₯이닀. 좜λ ₯ 첫째 쀄에 DFSλ₯Ό μˆ˜ν–‰ν•œ κ²°κ³Όλ₯Ό, κ·Έ λ‹€μŒ μ€„μ—λŠ” BFSλ₯Ό μˆ˜ν–‰ν•œ κ²°κ³Όλ₯Ό 좜λ ₯ν•œλ‹€. VλΆ€ν„° 방문된 점을 μˆœμ„œλŒ€λ‘œ 좜λ ₯ν•˜λ©΄ λœλ‹€. ..

[λ°±μ€€] 1676번: νŒ©ν† λ¦¬μ–Ό 0의 개수 - C++

문제 N!μ—μ„œ λ’€μ—μ„œλΆ€ν„° 처음 0이 μ•„λ‹Œ μˆ«μžκ°€ λ‚˜μ˜¬ λ•ŒκΉŒμ§€ 0의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 N이 주어진닀. (0 ≀ N ≀ 500) 좜λ ₯ 첫째 쀄에 κ΅¬ν•œ 0의 개수λ₯Ό 좜λ ₯ν•œλ‹€. N!을 κ΅¬ν•œ λ‹€μŒ 10으둜 λ‚˜λˆ„μ–΄ κ΅¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν’€λ©΄ N에 500을 λŒ€μž…ν•˜μ˜€μ„ λ•Œ 값이 μ•ˆλ‚˜μ˜€λŠ” 것을 확인할 수 μžˆλ‹€. 즉, νŒ©ν† λ¦¬μ–Όμ˜ 값을 κ³„μ‚°ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν’€λ©΄ μ•ˆλœλ‹€λŠ” λœ»μ΄λ‹€. 뒀에 0이 λ‚˜μ˜¨λ‹€λŠ” μ˜λ―ΈλŠ” 10의 λ°°μˆ˜λΌλŠ” 뜻이고, 0의 개수λ₯Ό κ΅¬ν•œλ‹€λŠ” 것은 10의 λͺ‡ μ œκ³±μΈμ§€, 곧 νŒ©ν† λ¦¬μ–Όμ΄ κ³„μ‚°λ˜λŠ” λ™μ•ˆ 2와 5κ°€ μ–Όλ§ˆλ‚˜ λ“€μ–΄κ°”λŠ”μ§€λ₯Ό μ˜λ―Έν•œλ‹€. κ³±ν•΄μ£ΌλŠ” μˆ˜μ— 2와 5κ°€ 각각 λͺ‡κ°œ κ³±ν•΄μ§€λŠ”μ§€ μ„Ό ν›„ 더 적은 값이 닡이 λ˜λŠ”λ°, λ²”μœ„ λ‚΄μ—μ„œ 5κ°€ 더 적게 λ“€μ–΄κ°€κΈ° λ•Œλ¬Έμ— 2의 κ²½μš°λŠ” κ³„μ‚°ν•˜μ§€ μ•Šμ•˜λ‹€..

[λ°±μ€€] 6588번: κ³¨λ“œλ°”νμ˜ μΆ”μΈ‘ - C++

문제 1742λ…„, λ…μΌμ˜ μ•„λ§ˆμΆ”μ–΄ μˆ˜ν•™κ°€ ν¬λ¦¬μŠ€ν‹°μ•ˆ κ³¨λ“œλ°”νλŠ” λ ˆμ˜¨ν•˜λ₯΄νŠΈ μ˜€μΌλŸ¬μ—κ²Œ λ‹€μŒκ³Ό 같은 좔츑을 μ œμ•ˆν•˜λŠ” νŽΈμ§€λ₯Ό λ³΄λƒˆλ‹€. 4보닀 큰 λͺ¨λ“  μ§μˆ˜λŠ” 두 ν™€μˆ˜ μ†Œμˆ˜μ˜ ν•©μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ 8은 3 + 5둜 λ‚˜νƒ€λ‚Ό 수 있고, 3κ³Ό 5λŠ” λͺ¨λ‘ ν™€μˆ˜μΈ μ†Œμˆ˜μ΄λ‹€. 또, 20 = 3 + 17 = 7 + 13, 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23 이닀. 이 좔츑은 아직도 ν•΄κ²°λ˜μ§€ μ•Šμ€ λ¬Έμ œμ΄λ‹€. 백만 μ΄ν•˜μ˜ λͺ¨λ“  μ§μˆ˜μ— λŒ€ν•΄μ„œ, 이 좔츑을 κ²€μ¦ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ μž…λ ₯은 ν•˜λ‚˜ λ˜λŠ” κ·Έ μ΄μƒμ˜ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ 이루어져 μžˆλ‹€. ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ κ°œμˆ˜λŠ” 100,000개λ₯Ό λ„˜μ§€ μ•ŠλŠ”λ‹€. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” 짝수 μ •μˆ˜ n ν•˜λ‚˜λ‘œ 이루어져 μžˆλ‹€. (6 ≀ n ..

[λ°±μ€€] 1929번: μ†Œμˆ˜ κ΅¬ν•˜κΈ° - C++ (+ μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체)

문제 M이상 Nμ΄ν•˜μ˜ μ†Œμˆ˜λ₯Ό λͺ¨λ‘ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 μžμ—°μˆ˜ Mκ³Ό N이 빈 칸을 사이에 두고 주어진닀. (1 ≀ M ≀ N ≀ 1,000,000) M이상 Nμ΄ν•˜μ˜ μ†Œμˆ˜κ°€ ν•˜λ‚˜ 이상 μžˆλŠ” μž…λ ₯만 주어진닀. 좜λ ₯ ν•œ 쀄에 ν•˜λ‚˜μ”©, μ¦κ°€ν•˜λŠ” μˆœμ„œλŒ€λ‘œ μ†Œμˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. μ•žμ„œ 1978번 μ†Œμˆ˜ μ°ΎκΈ°μ—μ„œ ν’€μ—ˆλ˜ νŠΉμ • μˆ˜μ— λŒ€ν•œ μ†Œμˆ˜ νŒμ •μ„ ν™•μž₯ν•˜μ—¬ νŠΉμ • λ²”μœ„ λ‚΄μ˜ μ†Œμˆ˜λ₯Ό λͺ¨λ‘ κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μΈ μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체λ₯Ό μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” λ¬Έμ œμ΄λ‹€. 말이 μ–΄λ ΅μ§€λ§Œ, 원리가 κ°„λ‹¨ν•˜λ‹€. 2 μ΄μƒμ˜ κ΅¬ν•˜κ³ μž ν•˜λŠ” λ²”μœ„ 내에 μ‘΄μž¬ν•˜λŠ” μžμ—°μˆ˜λ₯Ό λͺ¨λ‘ λ‚˜μ—΄ν•œ λ’€, 2의 λ°°μˆ˜λΆ€ν„° 3의 배수, 4의 배수, ... λ“± μ°¨λ‘€λ‘œ κ·Έ 수의 λ°°μˆ˜λ“€μ„ μ§€μ›Œλ‚˜κ°„λ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같이 2λΆ€ν„° 50κΉŒμ§€μ˜ λ²”μœ„ 내에..

[λ°±μ€€] 1978번: μ†Œμˆ˜ μ°ΎκΈ° - C++

문제 주어진 수 N개 μ€‘μ—μ„œ μ†Œμˆ˜κ°€ λͺ‡ κ°œμΈμ§€ μ°Ύμ•„μ„œ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫 쀄에 수의 개수 N이 주어진닀. N은 100μ΄ν•˜μ΄λ‹€. λ‹€μŒμœΌλ‘œ N개의 μˆ˜κ°€ μ£Όμ–΄μ§€λŠ”λ° μˆ˜λŠ” 1,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€. 좜λ ₯ 주어진 μˆ˜λ“€ 쀑 μ†Œμˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€. μ†Œμˆ˜λ₯Ό μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. μ†Œμˆ˜λŠ” 1보닀 큰 μžμ—°μˆ˜ 쀑 1κ³Ό 자기 μžμ‹ λ§Œμ„ μ•½μˆ˜λ‘œ κ°–λŠ” μžμ—°μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€. 2, 3, 5, 7, 11 .. λ“±μ˜ μžμ—°μˆ˜κ°€ μ†Œμˆ˜λ‘œ μ†ν•œλ‹€. 첫번째둜 κ°€μž₯ 기본적인 μ†Œμˆ˜λ₯Ό μ°ΎλŠ” 방법은 2λΆ€ν„° NκΉŒμ§€μ˜ 수λ₯Ό μ‘°μ‚¬ν•˜λŠ” 방법이닀. 2λΆ€ν„° NκΉŒμ§€μ˜ 수 i둜 N을 λ‚˜λˆ λ³΄λ©΄μ„œ λ‚˜λ¨Έμ§€κ°€ 0이 λ‚˜μ˜€λŠ”μ§€ νŒλ³„ν•˜λŠ” 것이닀. 2λΆ€ν„° NκΉŒμ§€ λͺ¨λ“  경우의 수λ₯Ό 계산해보기 λ•Œλ¬Έμ— μ‹œκ°„λ³΅μž‘λ„λŠ” O(N)이 λ‚˜μ˜¨λ‹€. boo..

[λ°±μ€€] 1934번: μ΅œμ†Œκ³΅λ°°μˆ˜ - C++

문제 두 μžμ—°μˆ˜ A와 B에 λŒ€ν•΄μ„œ, A의 λ°°μˆ˜μ΄λ©΄μ„œ B의 배수인 μžμ—°μˆ˜λ₯Ό A와 B의 곡배수라고 ν•œλ‹€. 이런 곡배수 μ€‘μ—μ„œ κ°€μž₯ μž‘μ€ 수λ₯Ό μ΅œμ†Œκ³΅λ°°μˆ˜λΌκ³  ν•œλ‹€. 예λ₯Ό λ“€μ–΄, 6κ³Ό 15의 κ³΅λ°°μˆ˜λŠ” 30, 60, 90등이 있으며, μ΅œμ†Œ κ³΅λ°°μˆ˜λŠ” 30이닀. 두 μžμ—°μˆ˜ A와 Bκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, A와 B의 μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 T(1 ≀ T ≀ 1,000)κ°€ 주어진닀. λ‘˜μ§Έ 쀄뢀터 T개의 쀄에 κ±Έμ³μ„œ A와 Bκ°€ 주어진닀. (1 ≀ A, B ≀ 45,000) 좜λ ₯ 첫째 쀄뢀터 T개의 쀄에 A와 B의 μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό μž…λ ₯받은 μˆœμ„œλŒ€λ‘œ ν•œ 쀄에 ν•˜λ‚˜μ”© 좜λ ₯ν•œλ‹€. 2609번 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜ λ₯Ό μ΄μš©ν•˜μ—¬ ν’€λ©΄ κ°„λ‹¨ν•˜κ²Œ ν’€ 수 μžˆλŠ” λ¬Έμ œμ΄λ‹€. μ½”λ“œ #include..

[λ°±μ€€] 2609번: μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜ - C++

문제 두 개의 μžμ—°μˆ˜λ₯Ό μž…λ ₯λ°›μ•„ μ΅œλŒ€ κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œ 곡배수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 μ€„μ—λŠ” 두 개의 μžμ—°μˆ˜κ°€ 주어진닀. 이 λ‘˜μ€ 10,000μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ©° 사이에 ν•œ 칸의 곡백이 주어진닀. 좜λ ₯ 첫째 μ€„μ—λŠ” μž…λ ₯으둜 주어진 두 수의 μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό, λ‘˜μ§Έ μ€„μ—λŠ” μž…λ ₯으둜 주어진 두 수의 μ΅œμ†Œ 곡배수λ₯Ό 좜λ ₯ν•œλ‹€. μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ„ μ΄μš©ν•˜μ—¬ ν‘ΈλŠ” λ¬Έμ œμ΄λ‹€. μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ€ 2개의 μžμ—°μˆ˜μ˜ μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ˜ ν•˜λ‚˜μ΄λ‹€. a > b 인 두 μˆ˜κ°€ μžˆμ„ λ•Œ, aλ₯Ό b둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ rμΌλ•Œ, a와 b의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” b와 r의 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ κ°™λ‹€. 같은 μ›λ¦¬λ‘œ 계속 값을 κ΅¬ν•˜μ—¬ λ‚˜λ¨Έμ§€κ°€ 0이 됐을 λ•Œμ˜ λ‚˜λˆ„λŠ” μˆ˜κ°€ a와 b의 μ΅œλŒ€κ³΅μ•½μˆ˜κ°€ λœλ‹€. 예λ₯Ό λ“€μ–΄ 414와 72의 μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜..