λͺ©λ‘μˆ˜ν•™ (12)

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

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ˜ˆμƒ λŒ€μ§„ν‘œ - C++

문제 β–³β–³ κ²Œμž„λŒ€νšŒκ°€ κ°œμ΅œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 λŒ€νšŒλŠ” Nλͺ…이 μ°Έκ°€ν•˜κ³ , ν† λ„ˆλ¨ΌνŠΈ ν˜•μ‹μœΌλ‘œ μ§„ν–‰λ©λ‹ˆλ‹€. Nλͺ…μ˜ μ°Έκ°€μžλŠ” 각각 1λΆ€ν„° Nλ²ˆμ„ μ°¨λ‘€λŒ€λ‘œ λ°°μ •λ°›μŠ΅λ‹ˆλ‹€. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 μ°Έκ°€μžλΌλ¦¬ κ²Œμž„μ„ μ§„ν–‰ν•©λ‹ˆλ‹€. 각 κ²Œμž„μ—μ„œ 이긴 μ‚¬λžŒμ€ λ‹€μŒ λΌμš΄λ“œμ— μ§„μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ, λ‹€μŒ λΌμš΄λ“œμ— μ§„μΆœν•  μ°Έκ°€μžμ˜ λ²ˆν˜ΈλŠ” λ‹€μ‹œ 1λ²ˆλΆ€ν„° N/2λ²ˆμ„ μ°¨λ‘€λŒ€λ‘œ λ°°μ •λ°›μŠ΅λ‹ˆλ‹€. λ§Œμ•½ 1번↔2번 끼리 κ²¨λ£¨λŠ” κ²Œμž„μ—μ„œ 2번이 μŠΉλ¦¬ν–ˆλ‹€λ©΄ λ‹€μŒ λΌμš΄λ“œμ—μ„œ 1λ²ˆμ„ λΆ€μ—¬λ°›κ³ , 3번↔4λ²ˆμ—μ„œ κ²¨λ£¨λŠ” κ²Œμž„μ—μ„œ 3번이 μŠΉλ¦¬ν–ˆλ‹€λ©΄ λ‹€μŒ λΌμš΄λ“œμ—μ„œ 2λ²ˆμ„ λΆ€μ—¬λ°›κ²Œ λ©λ‹ˆλ‹€. κ²Œμž„μ€ μ΅œμ’… ν•œ λͺ…이 남을 λ•ŒκΉŒμ§€ μ§„ν–‰λ©λ‹ˆλ‹€. μ΄λ•Œ, 처음 λΌμš΄λ“œμ—μ„œ Aλ²ˆμ„ 가진 μ°Έκ°€μžλŠ” 경쟁자둜 μƒκ°ν•˜λŠ” B번 μ°Έκ°€μžμ™€ λͺ‡ 번째 ..

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 점 찍기 - C++

문제 μ’Œν‘œν‰λ©΄μ„ μ’‹μ•„ν•˜λŠ” μ§„μˆ˜λŠ” xμΆ•κ³Ό y좕이 μ§κ΅ν•˜λŠ” 2차원 μ’Œν‘œν‰λ©΄μ— 점을 μ°μœΌλ©΄μ„œ 놀고 μžˆμŠ΅λ‹ˆλ‹€. μ§„μˆ˜λŠ” 두 μ–‘μ˜ μ •μˆ˜ k, dκ°€ μ£Όμ–΄μ§ˆ λ•Œ λ‹€μŒκ³Ό 같이 점을 찍으렀 ν•©λ‹ˆλ‹€. 원점(0, 0)μœΌλ‘œλΆ€ν„° xμΆ• λ°©ν–₯으둜 a*k(a = 0, 1, 2, 3 ...), yμΆ• λ°©ν–₯으둜 b*k(b = 0, 1, 2, 3 ...)만큼 떨어진 μœ„μΉ˜μ— 점을 μ°μŠ΅λ‹ˆλ‹€. 원점과 거리가 dλ₯Ό λ„˜λŠ” μœ„μΉ˜μ—λŠ” 점을 찍지 μ•ŠμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, kκ°€ 2, dκ°€ 4인 κ²½μš°μ—λŠ” (0, 0), (0, 2), (0, 4), (2, 0), (2, 2), (4, 0) μœ„μΉ˜μ— 점을 찍어 총 6개의 점을 μ°μŠ΅λ‹ˆλ‹€. μ •μˆ˜ k와 μ›μ κ³Όμ˜ 거리λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ dκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 점이 총 λͺ‡ 개 μ°νžˆλŠ”μ§€ return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±..

[λ°±μ€€] 2436번: κ³΅μ•½μˆ˜ - C++

문제 μ–΄λ–€ 두 μžμ—°μˆ˜μ— 곡톡인 μ•½μˆ˜λ“€ μ€‘μ—μ„œ κ°€μž₯ 큰 수λ₯Ό μ΅œλŒ€κ³΅μ•½μˆ˜λΌκ³  ν•˜κ³ , 두 μžμ—°μˆ˜μ˜ 곡톡인 λ°°μˆ˜λ“€ μ€‘μ—μ„œ κ°€μž₯ μž‘μ€ 수λ₯Ό μ΅œμ†Œκ³΅λ°°μˆ˜λΌκ³  ν•œλ‹€. 예λ₯Ό λ“€μ–΄, 두 μžμ—°μˆ˜ 12와 90의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” 6이며, μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 180이닀. 이와 λ°˜λŒ€λ‘œ 두 개의 μžμ—°μˆ˜ A, Bκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, Aλ₯Ό μ΅œλŒ€κ³΅μ•½μˆ˜λ‘œ, Bλ₯Ό μ΅œμ†Œκ³΅λ°°μˆ˜λ‘œ ν•˜λŠ” 두 개의 μžμ—°μˆ˜λ₯Ό ꡬ할 수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜, μ΄λŸ¬ν•œ 두 개의 μžμ—°μˆ˜ μŒμ€ μ—¬λŸ¬ 개 μžˆμ„ 수 있으며, λ˜ν•œ 없을 μˆ˜λ„ μžˆλ‹€. 예λ₯Ό λ“€μ–΄, μ΅œλŒ€κ³΅μ•½μˆ˜κ°€ 6이며 μ΅œμ†Œκ³΅λ°°μˆ˜κ°€ 180인 두 μ •μˆ˜λŠ” μœ„μ˜ μ˜ˆμ—μ„œμ™€ 같이 12와 90일 μˆ˜λ„ 있으며, 30κ³Ό 36, 18κ³Ό 60, ν˜Ήμ€ 6κ³Ό 180일 μˆ˜λ„ μžˆλ‹€. κ·ΈλŸ¬λ‚˜, μ΅œλŒ€κ³΅μ•½μˆ˜κ°€ 6이며 μ΅œμ†Œκ³΅λ°°μˆ˜κ°€ 20인 두 μžμ—°μˆ˜λŠ” μžˆμ„ 수 μ—†λ‹€. 두 개의..

[λ°±μ€€] 1024번: μˆ˜μ—΄μ˜ ν•© - C++

문제 Nκ³Ό L이 μ£Όμ–΄μ§ˆ λ•Œ, 합이 Nμ΄λ©΄μ„œ, 길이가 적어도 L인 κ°€μž₯ 짧은 μ—°μ†λœ 음이 μ•„λ‹Œ μ •μˆ˜ 리슀트λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 Nκ³Ό L이 주어진닀. N은 1,000,000,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄κ³ , L은 2보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€. 좜λ ₯ λ§Œμ•½ 리슀트의 길이가 100보닀 μž‘κ±°λ‚˜ κ°™μœΌλ©΄, μ—°μ†λœ 수λ₯Ό 첫째 쀄에 곡백으둜 κ΅¬λΆ„ν•˜μ—¬ 좜λ ₯ν•œλ‹€. λ§Œμ•½ 길이가 100보닀 ν¬κ±°λ‚˜ κ·ΈλŸ¬ν•œ μˆ˜μ—΄μ΄ 없을 λ•ŒλŠ” -1을 좜λ ₯ν•œλ‹€. μ½”λ“œμ μΈ μŠ€ν‚¬λ³΄λ‹€ μˆ˜ν•™μ μΈ μˆ˜μ‹μ„ μ’€ 더 μƒκ°ν•΄λ΄€μ—ˆμ–΄μ•Ό ν•˜λŠ” 문제.. μ²˜μŒμ— λ‹€λ“€ ν•˜λ“― 홀/짝수둜 λ‚˜λˆ μ„œ 생각을 ν•΄λ΄€λŠ”λ° 짝수인 κ²½μš°μ— 접근을 λͺ»ν•˜κ² μ–΄μ„œ μ°Ύμ•„λ΄€λ”λ‹ˆ μˆ˜μ‹μœΌλ‘œ μƒκ°ν•΄λ΄μ•Όν–ˆλ‹€. L 길이만큼 μ—°μ†λœ 수둜 κ΅¬μ„±λœ μˆ˜μ—΄μ˜ 합이 N..

[λ°±μ€€] 1222번: 홍쀀 ν”„λ‘œκ·Έλž˜λ° λŒ€νšŒ - C++

문제 ν™μ€€μ΄λŠ” ν”„λ‘œκ·Έλž˜λ° λŒ€νšŒλ₯Ό κ°œμ΅œν–ˆλ‹€. 이 λŒ€νšŒλŠ” μ‚¬λžŒλ“€μ΄ νŒ€μ„ μ΄λ£¨μ–΄μ„œ μ°Έκ°€ν•΄μ•Ό ν•˜λ©°, νŒ€μ›μ˜ μˆ˜λŠ” 홍쀀이가 μ •ν•΄μ€€λ‹€. νŒ€μ›μ΄ 홍쀀이가 μ •ν•œ 값보닀 λΆ€μ‘±ν•˜λ‹€λ©΄, κ·Έ νŒ€μ€ λŒ€νšŒμ— μ°Έμ—¬ν•  수 μ—†λ‹€. λͺ¨λ“  νŒ€μ€ 같은 수의 νŒ€μ›μœΌλ‘œ 이루어져 μžˆλ‹€. λŒ€νšŒμ— μ°Έμ—¬ μ˜μ‚¬λ₯Ό 밝힌 ν•™κ΅λŠ” 총 Nκ°œμ΄λ‹€. 각 ν•™κ΅λŠ” λͺ¨λ“  학생이 μ°Έμ—¬ν•  수 μžˆλŠ” κ²½μš°μ—λ§Œ λŒ€νšŒμ— μ°Έκ°€ν•œλ‹€. 즉, λ‚¨λŠ” μ‚¬λžŒ 없이 λͺ¨λ“  학생이 νŒ€μ— λ“€μ–΄κ°ˆ 수 μžˆμ–΄μ•Ό ν•œλ‹€. λŒ€νšŒλŠ” μ˜ˆμ„ κ³Ό λ³Έμ„ μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. λͺ¨λ“  νŒ€μ€ 같은 학ꡐ μ†Œμ†μœΌλ‘œ 이루어져 μžˆμ–΄μ•Ό ν•œλ‹€. μ˜ˆμ„ μ—μ„œ 각 학ꡐ 1λ“±νŒ€λ§Œ 본선에 μ§„μΆœν•œλ‹€. ν™μ€€μ΄μ˜ λŒ€νšŒλŠ” μ˜¬ν•΄κ°€ 첫 해이기 λ•Œλ¬Έμ—, λ§Žμ€ 관심이 ν•„μš”ν•˜λ‹€. λ”°λΌμ„œ, 본선에 μ°Έκ°€ν•˜λŠ” μ‚¬λžŒμ˜ 수λ₯Ό μ΅œλŒ€κ°€ λ˜λ„λ‘ νŒ€μ›μ˜ 수λ₯Ό μ •ν•˜λ €κ³  ν•œλ‹€. 또,..

[λ°±μ€€] 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..