λͺ©λ‘DP (35)

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

[λ°±μ€€] 1788번: ν”Όλ³΄λ‚˜μΉ˜ 수의 ν™•μž₯ - C++

문제 μˆ˜ν•™μ—μ„œ, ν”Όλ³΄λ‚˜μΉ˜ μˆ˜λŠ” μœ„μ˜ 점화식과 같이 κ·€λ‚©μ μœΌλ‘œ μ •μ˜λ˜λŠ” μˆ˜μ—΄μ΄λ‹€. μœ„μ˜ μ‹μ—μ„œλ„ μ•Œ 수 μžˆλ“―μ΄, ν”Όλ³΄λ‚˜μΉ˜ 수 F(n)은 0 μ΄μƒμ˜ n에 λŒ€ν•΄μ„œλ§Œ μ •μ˜λœλ‹€. ν•˜μ§€λ§Œ ν”Όλ³΄λ‚˜μΉ˜ 수 F(n)을 n이 음수인 κ²½μš°λ‘œλ„ ν™•μž₯μ‹œν‚¬ 수 μžˆλ‹€. μœ„μ˜ μ‹μ—μ„œ n > 1인 κ²½μš°μ—λ§Œ μ„±λ¦½ν•˜λŠ” F(n) = F(n-1) + F(n-2)λ₯Ό n ≀ 1일 λ•Œλ„ μ„±λ¦½λ˜λ„λ‘ μ •μ˜ν•˜λŠ” 것이닀. 예λ₯Ό λ“€μ–΄ n = 1일 λ•Œ F(1) = F(0) + F(-1)이 μ„±λ¦½λ˜μ–΄μ•Ό ν•˜λ―€λ‘œ, F(-1)은 1이 λ˜μ–΄μ•Ό ν•œλ‹€. n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, ν”Όλ³΄λ‚˜μΉ˜ 수 F(n)을 κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. n은 음수둜 μ£Όμ–΄μ§ˆ μˆ˜λ„ μžˆλ‹€. μž…λ ₯ 첫째 쀄에 n이 μ£Όμ–΄μ§„λ‹€. n은 μ ˆλŒ“κ°’μ΄ 1,000,000을 λ„˜μ§€ μ•ŠλŠ” μ •μˆ˜μ΄λ‹€. 좜λ ₯ 첫째 쀄에 F(n)이 μ–‘..

[λ°±μ€€] 14501번: 퇴사 - C++

문제 μƒλ‹΄μ›μœΌλ‘œ μΌν•˜κ³  μžˆλŠ” λ°±μ€€μ΄λŠ” 퇴사λ₯Ό ν•˜λ €κ³  ν•œλ‹€. μ˜€λŠ˜λΆ€ν„° N+1일째 λ˜λŠ” λ‚  퇴사λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œ, 남은 N일 λ™μ•ˆ μ΅œλŒ€ν•œ λ§Žμ€ 상담을 ν•˜λ €κ³  ν•œλ‹€. λ°±μ€€μ΄λŠ” λΉ„μ„œμ—κ²Œ μ΅œλŒ€ν•œ λ§Žμ€ 상담을 작으라고 뢀탁을 ν–ˆκ³ , λΉ„μ„œλŠ” ν•˜λ£¨μ— ν•˜λ‚˜μ”© μ„œλ‘œ λ‹€λ₯Έ μ‚¬λžŒμ˜ 상담을 μž‘μ•„λ†“μ•˜λ‹€. 각각의 상담은 상담을 μ™„λ£Œν•˜λŠ”λ° κ±Έλ¦¬λŠ” κΈ°κ°„ Ti와 상담을 ν–ˆμ„ λ•Œ 받을 수 μžˆλŠ” κΈˆμ•‘ Pi둜 이루어져 μžˆλ‹€. N = 7인 κ²½μš°μ— λ‹€μŒκ³Ό 같은 상담 μΌμ •ν‘œλ₯Ό 보자. 1일 2일 3일 4일 5일 6일 7일 Ti 3 5 1 1 2 4 2 Pi 10 20 10 20 15 40 200 1일에 μž‘ν˜€μžˆλŠ” 상담은 총 3일이 걸리며, μƒλ‹΄ν–ˆμ„ λ•Œ 받을 수 μžˆλŠ” κΈˆμ•‘μ€ 10이닀. 5일에 μž‘ν˜€μžˆλŠ” 상담은 총 2일이 걸리며, 받을 수 μžˆλŠ” κΈˆμ•‘μ€ 15..

[λ°±μ€€] 1932번: μ •μˆ˜ μ‚Όκ°ν˜• - C++

문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 μœ„ 그림은 크기가 5인 μ •μˆ˜ μ‚Όκ°ν˜•μ˜ ν•œ λͺ¨μŠ΅μ΄λ‹€. 맨 μœ„μΈ΅ 7λΆ€ν„° μ‹œμž‘ν•΄μ„œ μ•„λž˜μ— μžˆλŠ” 수 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ μ•„λž˜μΈ΅μœΌλ‘œ λ‚΄λ €μ˜¬ λ•Œ, μ΄μ œκΉŒμ§€ μ„ νƒλœ 수의 합이 μ΅œλŒ€κ°€ λ˜λŠ” 경둜λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ. μ•„λž˜μΈ΅μ— μžˆλŠ” μˆ˜λŠ” ν˜„μž¬ μΈ΅μ—μ„œ μ„ νƒλœ 수의 λŒ€κ°μ„  μ™Όμͺ½ λ˜λŠ” λŒ€κ°μ„  였λ₯Έμͺ½μ— μžˆλŠ” 것 μ€‘μ—μ„œλ§Œ 선택할 수 μžˆλ‹€. μ‚Όκ°ν˜•μ˜ ν¬κΈ°λŠ” 1 이상 500 μ΄ν•˜μ΄λ‹€. μ‚Όκ°ν˜•μ„ 이루고 μžˆλŠ” 각 μˆ˜λŠ” λͺ¨λ‘ μ •μˆ˜μ΄λ©°, λ²”μœ„λŠ” 0 이상 9999 μ΄ν•˜μ΄λ‹€. μž…λ ₯ 첫째 쀄에 μ‚Όκ°ν˜•μ˜ 크기 n(1 ≀ n ≀ 500)이 μ£Όμ–΄μ§€κ³ , λ‘˜μ§Έ 쀄뢀터 n+1번째 μ€„κΉŒμ§€ μ •μˆ˜ μ‚Όκ°ν˜•μ΄ μ£Όμ–΄μ§„λ‹€. 좜λ ₯ 첫째 쀄에 합이 μ΅œλŒ€κ°€ λ˜λŠ” κ²½λ‘œμ— μžˆλŠ” 수의 합을 좜λ ₯ν•œλ‹€. μ˜€λžœλ§Œμ— ..

[λ°±μ€€] 5624번: 쒋은 수 - C++

문제 μ •μˆ˜ N개둜 이루어진 μˆ˜μ—΄ Aκ°€ μžˆλ‹€. μ΄λ•Œ, i번째 μˆ˜κ°€ κ·Έ μ•žμ— μžˆλŠ” 수 μ„Έ 개의 ν•©μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆμ„ λ•Œ, κ·Έ 수λ₯Ό μ’‹λ‹€κ³  ν•œλ‹€. (같은 μœ„μΉ˜μ— μžˆλŠ” 수λ₯Ό μ—¬λŸ¬ 번 더해도 λœλ‹€) μˆ˜μ—΄μ΄ μ£Όμ–΄μ‘Œμ„ λ•Œ, 총 λͺ‡ 개의 μˆ˜κ°€ 쒋은 수 일까? μž…λ ₯ 첫째 쀄에 μˆ˜μ—΄ A의 크기 N이 μ£Όμ–΄μ§„λ‹€. (1 ≀ N ≀ 5000) λ‘˜μ§Έ μ€„μ—λŠ” μˆ˜μ—΄ A의 각 μˆ«μžκ°€ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μ£Όμ–΄μ§„λ‹€. (-100,000 ≀ Ai ≀ 100,000) 좜λ ₯ 첫째 쀄에 쒋은 수의 개수λ₯Ό 좜λ ₯ν•œλ‹€. μ˜€λžœλ§Œμ— ν’€μ–΄λ³΄μ•˜λ˜ λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ° λ¬Έμ œμ˜€λ‹€. 풀어본지도 μ˜€λž˜λκ±°λ‹ˆμ™€, λ‚œμ΄λ„ μžˆλŠ” 문제라 슀슀둜 생각해내기가 λ„ˆλ¬΄ μ–΄λ €μ›Œμ„œ κ²°κ΅­ κ΅¬κΈ€μ˜ νž˜μ„ λΉŒλ Έλ‹€γ… γ…  핡심적인 식은 x + y + z = n μ΄λ―€λ‘œ, μ •λ¦¬ν•˜λ©΄ x + y = n - ..

[λ°±μ€€] 11052번: μΉ΄λ“œ κ΅¬λ§€ν•˜κΈ° - C++

문제 μš”μ¦˜ λ―Όκ·œλ„€ λ™λ„€μ—μ„œλŠ” μŠ€νƒ€νŠΈλ§ν¬μ—μ„œ λ§Œλ“  PSμΉ΄λ“œλ₯Ό λͺ¨μœΌλŠ” 것이 μœ ν–‰μ΄λ‹€. PSμΉ΄λ“œλŠ” PS(Problem Solving)λΆ„μ•Όμ—μ„œ 유λͺ…ν•œ μ‚¬λžŒλ“€μ˜ 아이디와 얼꡴이 μ ν˜€μžˆλŠ” μΉ΄λ“œμ΄λ‹€. 각각의 μΉ΄λ“œμ—λŠ” 등급을 λ‚˜νƒ€λ‚΄λŠ” 색이 μΉ ν•΄μ Έ 있고, λ‹€μŒκ³Ό 같이 8κ°€μ§€κ°€ μžˆλ‹€. μ „μ„€μΉ΄λ“œ λ ˆλ“œμΉ΄λ“œ μ˜€λ Œμ§€μΉ΄λ“œ νΌν”ŒμΉ΄λ“œ λΈ”λ£¨μΉ΄λ“œ μ²­λ‘μΉ΄λ“œ κ·Έλ¦°μΉ΄λ“œ κ·Έλ ˆμ΄μΉ΄λ“œ μΉ΄λ“œλŠ” μΉ΄λ“œνŒ©μ˜ ν˜•νƒœλ‘œλ§Œ ꡬ맀할 수 있고, μΉ΄λ“œνŒ©μ˜ μ’…λ₯˜λŠ” μΉ΄λ“œ 1κ°œκ°€ ν¬ν•¨λœ μΉ΄λ“œνŒ©, μΉ΄λ“œ 2κ°œκ°€ ν¬ν•¨λœ μΉ΄λ“œνŒ©, ... μΉ΄λ“œ Nκ°œκ°€ ν¬ν•¨λœ μΉ΄λ“œνŒ©κ³Ό 같이 총 Nκ°€μ§€κ°€ μ‘΄μž¬ν•œλ‹€. λ―Όκ·œλŠ” μΉ΄λ“œμ˜ κ°œμˆ˜κ°€ 적은 νŒ©μ΄λ”λΌλ„ 가격이 λΉ„μ‹Έλ©΄ 높은 λ“±κΈ‰μ˜ μΉ΄λ“œκ°€ 많이 λ“€μ–΄μžˆμ„ κ²ƒμ΄λΌλŠ” 미신을 λ―Ώκ³  μžˆλ‹€. λ”°λΌμ„œ, λ―Όκ·œλŠ” λˆμ„ μ΅œλŒ€ν•œ 많이 μ§€λΆˆν•΄μ„œ μΉ΄λ“œ N개 κ΅¬λ§€ν•˜λ €κ³  ν•œλ‹€. μΉ΄..

[λ°±μ€€] 9461번: νŒŒλ„λ°˜ μˆ˜μ—΄ - C++

문제 였λ₯Έμͺ½ κ·Έλ¦Όκ³Ό 같이 μ‚Όκ°ν˜•μ΄ λ‚˜μ„  λͺ¨μ–‘μœΌλ‘œ 놓여져 μžˆλ‹€. 첫 μ‚Όκ°ν˜•μ€ μ •μ‚Όκ°ν˜•μœΌλ‘œ λ³€μ˜ κΈΈμ΄λŠ” 1이닀. κ·Έ λ‹€μŒμ—λŠ” λ‹€μŒκ³Ό 같은 κ³Όμ •μœΌλ‘œ μ •μ‚Όκ°ν˜•μ„ 계속 μΆ”κ°€ν•œλ‹€. λ‚˜μ„ μ—μ„œ κ°€μž₯ κΈ΄ λ³€μ˜ 길이λ₯Ό k라 ν–ˆμ„ λ•Œ, κ·Έ 변에 길이가 k인 μ •μ‚Όκ°ν˜•μ„ μΆ”κ°€ν•œλ‹€. νŒŒλ„λ°˜ μˆ˜μ—΄ P(N)은 λ‚˜μ„ μ— μžˆλŠ” μ •μ‚Όκ°ν˜•μ˜ λ³€μ˜ 길이이닀. P(1)λΆ€ν„° P(10)κΉŒμ§€ 첫 10개 μˆ«μžλŠ” 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이닀. N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, P(N)을 κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 Tκ°€ μ£Όμ–΄μ§„λ‹€. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” ν•œ μ€„λ‘œ 이루어져 있고, N이 μ£Όμ–΄μ§„λ‹€. (1 ≀ N ≀ 100) 좜λ ₯ 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ P(N)을 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. 생각..

[λ°±μ€€] 2133번: 타일 μ±„μš°κΈ° - C++

문제 3Γ—N 크기의 벽을 2Γ—1, 1Γ—2 크기의 νƒ€μΌλ‘œ μ±„μš°λŠ” 경우의 수λ₯Ό κ΅¬ν•΄λ³΄μž. μž…λ ₯ 첫째 쀄에 N(1 ≀ N ≀ 30)이 μ£Όμ–΄μ§„λ‹€. 좜λ ₯ 첫째 쀄에 경우의 수λ₯Ό 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. ...μ΄λŸ°μ‹μœΌλ‘œ λ…Έκ°€λ‹€λ‘œ 경우의 μˆ˜λ“€μ„ 풀어쓰닀보면 κ·œμΉ™μ„ λ°œκ²¬ν•˜μ—¬ ν’€ 수 μžˆλ‹€. 사싀 λ‚˜λŠ” ꡬ글링 해봐도 이해λ₯Ό λͺ»ν•΄μ„œ μ €λ ‡κ²Œ ν’€μ—ˆλ‹€. 3Γ—N 크기의 벽을 1Γ—2 타일 ν˜Ήμ€ 2Γ—1 νƒ€μΌλ‘œ μ±„μšΈ 수 μžˆλŠ” κ²½μš°λŠ” N이 짝수일 λ•Œ 뿐이고, N이 2μΌλ•Œ 기본적으둜 μ±„μšΈ 수 μžˆλŠ” νƒ€μΌμ˜ λͺ¨μŠ΅μ€ λ‹€μŒκ³Ό 같이 λ‚˜μ˜¨λ‹€. 그리고, N이 4 이상일 경우 μœ„μ™€ 같이 각 νƒ€μΌμ˜ 길이만큼 λ°°μΉ˜ν•  수 μžˆλŠ” 좔가적인 κ²½μš°λ“€μ΄ μ‘΄μž¬ν•œλ‹€. λ”°λΌμ„œ λ°°μΉ˜ν•  수 μžˆλŠ” 경우의 수λ₯Ό λͺ¨λ‘ μ •λ¦¬ν•˜λ©΄ 점화식은 λ‹€μŒκ³Ό κ°™λ‹€. 1. n ..

[λ°±μ€€] 1699번: 제곱수의 ν•© - C++

문제 μ–΄λ–€ μžμ—°μˆ˜ N은 그보닀 μž‘κ±°λ‚˜ 같은 μ œκ³±μˆ˜λ“€μ˜ ν•©μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ 11=32+12+12(3개 ν•­)이닀. 이런 ν‘œν˜„λ°©λ²•μ€ μ—¬λŸ¬ κ°€μ§€κ°€ 될 수 μžˆλŠ”λ°, 11의 경우 11=22+22+12+12+12(5개 ν•­)도 κ°€λŠ₯ν•˜λ‹€. 이 경우, μˆ˜ν•™μž μˆŒν¬λΌν…ŒμŠ€λŠ” β€œ11은 3개 ν•­μ˜ 제곱수 ν•©μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€.”라고 λ§ν•œλ‹€. λ˜ν•œ 11은 그보닀 적은 ν•­μ˜ 제곱수 ν•©μœΌλ‘œ ν‘œν˜„ν•  수 μ—†μœΌλ―€λ‘œ, 11을 κ·Έ ν•©μœΌλ‘œμ¨ ν‘œν˜„ν•  수 μžˆλŠ” 제곱수 ν•­μ˜ μ΅œμ†Œ κ°œμˆ˜λŠ” 3이닀. μ£Όμ–΄μ§„ μžμ—°μˆ˜ N을 μ΄λ ‡κ²Œ μ œκ³±μˆ˜λ“€μ˜ ν•©μœΌλ‘œ ν‘œν˜„ν•  λ•Œμ— κ·Έ ν•­μ˜ μ΅œμ†Œκ°œμˆ˜λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. μž…λ ₯ 첫째 쀄에 μžμ—°μˆ˜ N이 μ£Όμ–΄μ§„λ‹€. (1 ≀ N ≀ 100,000) 좜λ ₯ μ£Όμ–΄μ§„ μžμ—°μˆ˜λ₯Ό 제곱수의 ν•©μœΌλ‘œ λ‚˜νƒ€λ‚Ό λ•Œμ— κ·Έ 제곱수 ..

[λ°±μ€€] 1912번: 연속합 - C++

문제 n개의 μ •μˆ˜λ‘œ 이루어진 μž„μ˜μ˜ μˆ˜μ—΄μ΄ μ£Όμ–΄μ§„λ‹€. μš°λ¦¬λŠ” 이 쀑 μ—°μ†λœ λͺ‡ 개의 수λ₯Ό μ„ νƒν•΄μ„œ ꡬ할 수 μžˆλŠ” ν•© 쀑 κ°€μž₯ 큰 합을 κ΅¬ν•˜λ €κ³  ν•œλ‹€. 단, μˆ˜λŠ” ν•œ 개 이상 선택해야 ν•œλ‹€. 예λ₯Ό λ“€μ–΄μ„œ 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 μ΄λΌλŠ” μˆ˜μ—΄μ΄ μ£Όμ–΄μ‘Œλ‹€κ³  ν•˜μž. μ—¬κΈ°μ„œ 정닡은 12+21인 33이 정닡이 λœλ‹€. μž…λ ₯ 첫째 쀄에 μ •μˆ˜ n(1 ≀ n ≀ 100,000)이 μ£Όμ–΄μ§€κ³  λ‘˜μ§Έ μ€„μ—λŠ” n개의 μ •μˆ˜λ‘œ 이루어진 μˆ˜μ—΄μ΄ μ£Όμ–΄μ§„λ‹€. μˆ˜λŠ” -1,000보닀 ν¬κ±°λ‚˜ κ°™κ³ , 1,000보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜μ΄λ‹€. 좜λ ₯ 첫째 쀄에 닡을 좜λ ₯ν•œλ‹€. DPλ₯Ό μ΄μš©ν•˜μ—¬ ν’€ 수 μžˆλŠ” 문제. μ•žμ„œ ν’€μ—ˆλ˜ LIS λ¬Έμ œλ“€μ—μ„œ 쑰금만 μ‘μš©ν•˜λ©΄ ν’€ 수 μžˆλ‹€. nκΉŒμ§€μ˜ μˆ˜μ—΄μΈ A[]와 뢀뢄합을 κΈ°λ‘ν•˜λŠ” ..