λͺ©λ‘λ°±μ€€ (70)

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

[λ°±μ€€] 2193번: 이친수 - C++

문제 0κ³Ό 1둜만 이루어진 수λ₯Ό μ΄μ§„μˆ˜λΌ ν•œλ‹€. μ΄λŸ¬ν•œ μ΄μ§„μˆ˜ 쀑 νŠΉλ³„ν•œ μ„±μ§ˆμ„ κ°–λŠ” 것듀이 μžˆλŠ”λ°, 이듀을 이친수(pinary number)라 ν•œλ‹€. μ΄μΉœμˆ˜λŠ” λ‹€μŒμ˜ μ„±μ§ˆμ„ λ§Œμ‘±ν•œλ‹€. μ΄μΉœμˆ˜λŠ” 0으둜 μ‹œμž‘ν•˜μ§€ μ•ŠλŠ”λ‹€. μ΄μΉœμˆ˜μ—μ„œλŠ” 1이 두 번 μ—°μ†μœΌλ‘œ λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ”λ‹€. 즉, 11을 λΆ€λΆ„ λ¬Έμžμ—΄λ‘œ 갖지 μ•ŠλŠ”λ‹€. 예λ₯Ό λ“€λ©΄ 1, 10, 100, 101, 1000, 1001 등이 μ΄μΉœμˆ˜κ°€ λœλ‹€. ν•˜μ§€λ§Œ 0010101μ΄λ‚˜ 101101은 각각 1, 2번 κ·œμΉ™μ— μœ„λ°°λ˜λ―€λ‘œ μ΄μΉœμˆ˜κ°€ μ•„λ‹ˆλ‹€. N(1 ≤ N ≤ 90)이 μ£Όμ–΄μ‘Œμ„ λ•Œ, N자리 이친수의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 N이 주어진닀. 좜λ ₯ 첫째 쀄에 N자리 이친수의 개수λ₯Ό 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. μ΄μΉœμˆ˜λŠ” 0으..

[λ°±μ€€] 11057번: 였λ₯΄λ§‰ 수 - C++

문제 였λ₯΄λ§‰ μˆ˜λŠ” 수의 μžλ¦¬κ°€ μ˜€λ¦„μ°¨μˆœμ„ μ΄λ£¨λŠ” 수λ₯Ό λ§ν•œλ‹€. μ΄λ•Œ, μΈμ ‘ν•œ μˆ˜κ°€ 같아도 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μΉœλ‹€. 예λ₯Ό λ“€μ–΄, 2234와 3678, 11119λŠ” 였λ₯΄λ§‰ μˆ˜μ΄μ§€λ§Œ, 2232, 3676, 91111은 였λ₯΄λ§‰ μˆ˜κ°€ μ•„λ‹ˆλ‹€. 수의 길이 N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 였λ₯΄λ§‰ 수의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μˆ˜λŠ” 0으둜 μ‹œμž‘ν•  수 μžˆλ‹€. μž…λ ₯ 첫째 쀄에 N (1 ≤ N ≤ 1,000)이 주어진닀. 좜λ ₯ 첫째 쀄에 길이가 N인 였λ₯΄λ§‰ 수의 개수λ₯Ό 10,007둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό 좜λ ₯ν•œλ‹€. DPλ₯Ό μ‚¬μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. μ•žμ„œ ν’€μ—ˆλ˜ 10844번 μ‰¬μš΄ κ³„λ‹¨μˆ˜ λ¬Έμ œμ™€ λΉ„μŠ·ν•˜λ‹€. N = 1 μΌλ•ŒλŠ” 0λΆ€ν„° 9κΉŒμ§€(μˆ˜λŠ” 0으둜 μ‹œμž‘ν•  수 있음) 10가지이고, N = 2 μΌλ•ŒλŠ” { 00, 01, ..., 11, 12..

[λ°±μ€€] 10844번: μ‰¬μš΄ κ³„λ‹¨μˆ˜ - C++

문제 45656μ΄λž€ 수λ₯Ό 보자. 이 μˆ˜λŠ” μΈμ ‘ν•œ λͺ¨λ“  자리수의 차이가 1이 λ‚œλ‹€. 이런 수λ₯Ό 계단 수라고 ν•œλ‹€. μ„Έμ€€μ΄λŠ” 수의 길이가 N인 계단 μˆ˜κ°€ λͺ‡ 개 μžˆλŠ”μ§€ κΆκΈˆν•΄μ‘Œλ‹€. N이 μ£Όμ–΄μ§ˆ λ•Œ, 길이가 N인 계단 μˆ˜κ°€ 총 λͺ‡ 개 μžˆλŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. (0으둜 μ‹œμž‘ν•˜λŠ” μˆ˜λŠ” μ—†λ‹€.) μž…λ ₯ 첫째 쀄에 N이 주어진닀. N은 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€. 좜λ ₯ 첫째 쀄에 정닡을 1,000,000,000으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. 문제 이름은 μ‰¬μš΄ κ³„λ‹¨μˆ˜μΈλ° ν•˜λ‚˜λ„ μ•ˆμ‰½λ‹€. N = 1μΌλ•ŒλŠ” 1λΆ€ν„° 9κΉŒμ§€(0은 ν¬ν•¨ν•˜μ§€ μ•ŠμŒ) 9가지고, N = 2μΌλ•ŒλŠ” { 10, 12, 21, 23, 32, 34, ... , 89, 98 } (90은 ..

[λ°±μ€€] 2579번: 계단 였λ₯΄κΈ° - C++

문제 계단 였λ₯΄κΈ° κ²Œμž„μ€ 계단 μ•„λž˜ μ‹œμž‘μ λΆ€ν„° 계단 κΌ­λŒ€κΈ°μ— μœ„μΉ˜ν•œ λ„μ°©μ κΉŒμ§€ κ°€λŠ” κ²Œμž„μ΄λ‹€. κ³Ό 같이 각각의 κ³„λ‹¨μ—λŠ” μΌμ •ν•œ μ μˆ˜κ°€ μ“°μ—¬ μžˆλŠ”λ° 계단을 밟으면 κ·Έ 계단에 μ“°μ—¬ μžˆλŠ” 점수λ₯Ό μ–»κ²Œ λœλ‹€. 예λ₯Ό λ“€μ–΄ 와 같이 μ‹œμž‘μ μ—μ„œλΆ€ν„° 첫 번째, 두 번째, λ„€ 번째, μ—¬μ„― 번째 계단을 λ°Ÿμ•„ 도착점에 λ„λ‹¬ν•˜λ©΄ 총 μ μˆ˜λŠ” 10 + 20 + 25 + 20 = 75점이 λœλ‹€. 계단 였λ₯΄λŠ” λ°λŠ” λ‹€μŒκ³Ό 같은 κ·œμΉ™μ΄ μžˆλ‹€. 계단은 ν•œ λ²ˆμ— ν•œ 계단씩 λ˜λŠ” 두 계단씩 였λ₯Ό 수 μžˆλ‹€. 즉, ν•œ 계단을 λ°ŸμœΌλ©΄μ„œ μ΄μ–΄μ„œ λ‹€μŒ κ³„λ‹¨μ΄λ‚˜, λ‹€μŒ λ‹€μŒ κ³„λ‹¨μœΌλ‘œ 였λ₯Ό 수 μžˆλ‹€. μ—°μ†λœ μ„Έ 개의 계단을 λͺ¨λ‘ λ°Ÿμ•„μ„œλŠ” μ•ˆ λœλ‹€. 단, μ‹œμž‘μ μ€ 계단에 ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€. λ§ˆμ§€λ§‰ 도착 계단은 λ°˜λ“œμ‹œ λ°Ÿμ•„μ•Ό ν•œλ‹€. λ”°λΌμ„œ 첫 번째 계단을 ..

[λ°±μ€€] 2156번: 포도주 μ‹œμ‹ - C++

문제 νš¨μ£ΌλŠ” 포도주 μ‹œμ‹νšŒμ— κ°”λ‹€. κ·Έ 곳에 κ°”λ”λ‹ˆ, ν…Œμ΄λΈ” μœ„μ— λ‹€μ–‘ν•œ 포도주가 λ“€μ–΄μžˆλŠ” 포도주 μž”μ΄ 일렬둜 놓여 μžˆμ—ˆλ‹€. νš¨μ£ΌλŠ” 포도주 μ‹œμ‹μ„ ν•˜λ €κ³  ν•˜λŠ”λ°, μ—¬κΈ°μ—λŠ” λ‹€μŒκ³Ό 같은 두 가지 κ·œμΉ™μ΄ μžˆλ‹€. 포도주 μž”μ„ μ„ νƒν•˜λ©΄ κ·Έ μž”μ— λ“€μ–΄μžˆλŠ” ν¬λ„μ£ΌλŠ” λͺ¨λ‘ λ§ˆμ…”μ•Ό ν•˜κ³ , λ§ˆμ‹  ν›„μ—λŠ” μ›λž˜ μœ„μΉ˜μ— λ‹€μ‹œ 놓아야 ν•œλ‹€. μ—°μ†μœΌλ‘œ 놓여 μžˆλŠ” 3μž”μ„ λͺ¨λ‘ λ§ˆμ‹€ μˆ˜λŠ” μ—†λ‹€. νš¨μ£ΌλŠ” 될 수 μžˆλŠ” λŒ€λ‘œ λ§Žμ€ μ–‘μ˜ 포도주λ₯Ό 맛보기 μœ„ν•΄μ„œ μ–΄λ–€ 포도주 μž”μ„ 선택해야 할지 κ³ λ―Όν•˜κ³  μžˆλ‹€. 1λΆ€ν„° nκΉŒμ§€μ˜ λ²ˆν˜Έκ°€ λΆ™μ–΄ μžˆλŠ” n개의 포도주 μž”μ΄ μˆœμ„œλŒ€λ‘œ ν…Œμ΄λΈ” μœ„μ— 놓여 있고, 각 포도주 μž”μ— λ“€μ–΄μžˆλŠ” ν¬λ„μ£Όμ˜ 양이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 효주λ₯Ό 도와 κ°€μž₯ λ§Žμ€ μ–‘μ˜ 포도주λ₯Ό λ§ˆμ‹€ 수 μžˆλ„λ‘ ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 예λ₯Ό λ“€μ–΄ ..

[λ°±μ€€] 9095번: 1, 2, 3 λ”ν•˜κΈ° - C++

문제 μ •μˆ˜ 4λ₯Ό 1, 2, 3의 ν•©μœΌλ‘œ λ‚˜νƒ€λ‚΄λŠ” 방법은 총 7가지가 μžˆλ‹€. 합을 λ‚˜νƒ€λ‚Ό λ•ŒλŠ” 수λ₯Ό 1개 이상 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 μ •μˆ˜ n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, n을 1, 2, 3의 ν•©μœΌλ‘œ λ‚˜νƒ€λ‚΄λŠ” λ°©λ²•μ˜ 수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 Tκ°€ 주어진닀. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” ν•œ μ€„λ‘œ 이루어져 있고, μ •μˆ˜ n이 주어진닀. n은 μ–‘μˆ˜μ΄λ©° 11보닀 μž‘λ‹€. 좜λ ₯ 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€, n을 1, 2, 3의 ν•©μœΌλ‘œ λ‚˜νƒ€λ‚΄λŠ” λ°©λ²•μ˜ 수λ₯Ό 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν‘ΈλŠ” 문제. μ•žμ„œ ν’€μ—ˆλ˜ 타일링 λ¬Έμ œλ“€κ³Ό λ™μΌν•˜κ²Œ μƒκ°ν•˜λ©΄ μ‰½κ²Œ ν’€ 수 μžˆλ‹€. 1, 2, 3만으둜 숫자 n을 λ§Œλ“€κΈ° μœ„ν•œ 경우의 μˆ˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€. 1. (n..

[λ°±μ€€] 11727번: 2×n 타일링 2 - C++

문제 2×n μ§μ‚¬κ°ν˜•μ„ 1×2, 2×1κ³Ό 2×2 νƒ€μΌλ‘œ μ±„μš°λŠ” λ°©λ²•μ˜ 수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μ•„λž˜ 그림은 2×17 μ§μ‚¬κ°ν˜•μ„ μ±„μš΄ ν•œκ°€μ§€ μ˜ˆμ΄λ‹€. μž…λ ₯ 첫째 쀄에 n이 주어진닀. (1 ≤ n ≤ 1,000) 좜λ ₯ 첫째 쀄에 2×n 크기의 μ§μ‚¬κ°ν˜•μ„ μ±„μš°λŠ” λ°©λ²•μ˜ 수λ₯Ό 10,007둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν‘ΈλŠ” 문제. μ•žμ„œ ν’€μ—ˆλ˜ 11726번인 2xn 타일링을 쑰금만 μ‘μš©ν•˜λ©΄ λ°”λ‘œ ν’€ 수 μžˆλ‹€. κ°€λ‘œ ν•œ 칸을 1x2 νƒ€μΌλ‘œ μ±„μš°λŠ” 방법 ν•œ 가지, κ°€λ‘œ 두 칸을 2x1 타일을 μœ„μ•„λž˜λ‘œ μŒ“μ•„ μ±„μš°λŠ” 방법 ν•˜λ‚˜, 2x2 νƒ€μΌλ‘œ μ±„μš°λŠ” 방법 ν•˜λ‚˜μΈ 점을 κ³ λ €ν•˜μ—¬ 점화식을 μ„Έμš°λ©΄ λ‹€μŒκ³Ό κ°™λ‹€. D[n] = D[n - 1] + 2 * D[n - 2] 이 문제 μ—­μ‹œ μ΄ˆκΈ°κ°’ μ„€μ •κ³Ό 맀 μ—°μ‚°..

[λ°±μ€€] 11726번: 2×n 타일링 - C++

문제 2×n 크기의 μ§μ‚¬κ°ν˜•μ„ 1×2, 2×1 νƒ€μΌλ‘œ μ±„μš°λŠ” λ°©λ²•μ˜ 수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μ•„λž˜ 그림은 2×5 크기의 μ§μ‚¬κ°ν˜•μ„ μ±„μš΄ ν•œ 가지 λ°©λ²•μ˜ μ˜ˆμ΄λ‹€. μž…λ ₯ 첫째 쀄에 n이 주어진닀. (1 ≤ n ≤ 1,000) 좜λ ₯ 첫째 쀄에 2×n 크기의 μ§μ‚¬κ°ν˜•μ„ μ±„μš°λŠ” λ°©λ²•μ˜ 수λ₯Ό 10,007둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. κ·œμΉ™μ„ μƒκ°ν•˜λ©΄ μœ„ 사진과 κ°™λ‹€. 타일을 λ°°μΉ˜ν•  λ•Œ λ§ˆλ‹€ κ°€λ‘œ ν•œ 칸을 1x2 νƒ€μΌλ‘œ λ°°μΉ˜ν•  수 μžˆλŠ” 방법 ν•˜λ‚˜, κ°€λ‘œ 두 칸을 2x1 타일을 μœ„μ•„λž˜λ‘œ λ‘κ°œ μŒ“μ•„ λ°°μΉ˜ν•  수 μžˆλŠ” 방법 ν•˜λ‚˜κ°€ μžˆμ–΄ 점화식을 μ„Έμ›Œλ³΄λ©΄ λ‹€μŒκ³Ό 같은 식이 λ‚˜μ˜¨λ‹€. D[n] = D[n - 1] + D[n- 2] λ§žλ‹€. κ·Έλƒ₯ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄ λ¬Έμ œλ‹€. μ΄ˆκΈ°κ°’ μ„€μ •κ³Ό 맀 μ—°..

[λ°±μ€€] 10814번: λ‚˜μ΄μˆœ μ •λ ¬ - C++

문제 온라인 저지에 κ°€μž…ν•œ μ‚¬λžŒλ“€μ˜ λ‚˜μ΄μ™€ 이름이 κ°€μž…ν•œ μˆœμ„œλŒ€λ‘œ 주어진닀. μ΄λ•Œ, νšŒμ›λ“€μ„ λ‚˜μ΄κ°€ μ¦κ°€ν•˜λŠ” 순으둜, λ‚˜μ΄κ°€ κ°™μœΌλ©΄ λ¨Όμ € κ°€μž…ν•œ μ‚¬λžŒμ΄ μ•žμ— μ˜€λŠ” μˆœμ„œλ‘œ μ •λ ¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 온라인 저지 νšŒμ›μ˜ 수 N이 주어진닀. (1 ≤ N ≤ 100,000) λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” 각 νšŒμ›μ˜ λ‚˜μ΄μ™€ 이름이 곡백으둜 κ΅¬λΆ„λ˜μ–΄ 주어진닀. λ‚˜μ΄λŠ” 1보닀 ν¬κ±°λ‚˜ κ°™μœΌλ©°, 200보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜μ΄κ³ , 이름은 μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμžλ‘œ 이루어져 있고, 길이가 100보닀 μž‘κ±°λ‚˜ 같은 λ¬Έμžμ—΄μ΄λ‹€. μž…λ ₯은 κ°€μž…ν•œ μˆœμ„œλ‘œ 주어진닀. 좜λ ₯ 첫째 쀄뢀터 총 N개의 쀄에 걸쳐 온라인 저지 νšŒμ›μ„ λ‚˜μ΄ 순, λ‚˜μ΄κ°€ κ°™μœΌλ©΄ κ°€μž…ν•œ 순으둜 ν•œ 쀄에 ν•œ λͺ…μ”© λ‚˜μ΄μ™€ 이름을 곡백으둜 ꡬ뢄해 좜λ ₯ν•œλ‹€. μ •λ ¬..

[λ°±μ€€] 1463번: 1둜 λ§Œλ“€κΈ° - C++

문제 μ •μˆ˜ X에 μ‚¬μš©ν•  수 μžˆλŠ” 연산은 λ‹€μŒκ³Ό 같이 μ„Έ 가지 이닀. Xκ°€ 3으둜 λ‚˜λˆ„μ–΄ 떨어지면, 3으둜 λ‚˜λˆˆλ‹€. Xκ°€ 2둜 λ‚˜λˆ„μ–΄ 떨어지면, 2둜 λ‚˜λˆˆλ‹€. 1을 λΊ€λ‹€. μ •μˆ˜ N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, μœ„μ™€ 같은 μ—°μ‚° μ„Έ 개λ₯Ό 적절히 μ‚¬μš©ν•΄μ„œ 1을 λ§Œλ“€λ €κ³  ν•œλ‹€. 연산을 μ‚¬μš©ν•˜λŠ” 횟수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 106보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜ N이 주어진닀. 좜λ ₯ 첫째 쀄에 연산을 ν•˜λŠ” 횟수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. 1. N이 3으둜 λ‚˜λˆ„μ–΄ 떨어지면, 3으둜 λ‚˜λˆˆλ‹€ ➑️ D[N] = D[N/3] + 1 2. N이 2둜 λ‚˜λˆ„μ–΄ 떨어지면, 2둜 λ‚˜λˆˆλ‹€ ➑️ D[N] = D[N/2] + 1 3. 1을 λΊ€λ‹€ ➑️ D[N] = D[N - 1] + 1 κ·ΈλŸ¬λ‚˜ ..