λ°˜μ‘ν˜•

πŸ•οΈ ICPC Sinchon/Dynamic Programming 26

[BOJ][C++] λ°±μ€€ 2421번: μ €κΈˆν†΅

https://www.acmicpc.net/problem/2421 λ¬Έμ œν™νƒœμ„μ€ μ €κΈˆν†΅ 2개λ₯Ό 가지고 μžˆλ‹€. ν™νƒœμ„μ€ 맀일맀일 ν•˜λ‚˜μ˜ μ €κΈˆν†΅μ— 1원을 λ„£λŠ”λ‹€. 두 μ €κΈˆν†΅μ— λͺ¨λ‘ N원이 λͺ¨μ΄λ©΄ νƒœμ„μ΄λŠ” μƒˆλ‘œμš΄ μž₯λ‚œκ°μ„ μ‚΄ 수 있기 λ•Œλ¬Έμ—, μ €κΈˆμ„ λ©ˆμΆ˜λ‹€.ν™νƒœμ„μ€ μ†Œμˆ˜λ₯Ό μ’‹μ•„ν•˜λŠ” κ²ƒμœΌλ‘œ μ„œκ°•λŒ€μ—μ„œ 유λͺ…ν•˜κΈ° λ•Œλ¬Έμ—, 첫째 μ €κΈˆν†΅μ— λ“€μ–΄μžˆλŠ” 돈의 μ–‘κ³Ό λ‘˜μ§Έ μ €κΈˆν†΅μ˜ 돈의 양을 μ΄μ–΄λΆ™μ˜€μ„ λ•Œ, 그것이 μ†Œμˆ˜κ°€ λ˜λŠ” 것을 λ„ˆλ¬΄λ‚˜λ„ μ’‹μ•„ν•œλ‹€.예λ₯Ό λ“€μ–΄, 첫째 μ €κΈˆν†΅μ— 12원이 있고, λ‘˜μ§Έ μ €κΈˆν†΅μ— 7원이 μžˆλ‹€κ³  ν•˜μž. 그럼 κ·Έ 두 수λ₯Ό 이은 127은 μ†Œμˆ˜κ°€ λœλ‹€.이제, μ΅œλŒ€ν•œ μ†Œμˆ˜κ°€ 많이 λ‚˜μ˜€λ„λ‘, ν™νƒœμ„μ΄ λˆμ„ λ„£λŠ” 졜적의 μˆœμ„œλ₯Ό μ°Ύμ•„λ‚΄λ©΄ λœλ‹€. κ°€μž₯ μ²˜μŒμ— 두 μ €κΈˆν†΅μ—λŠ” 1원씩 λ“€μ–΄μžˆλ‹€.예λ₯Ό λ“€μ–΄,  N=4일 λ•Œλ₯Ό ..

[BOJ][C++] λ°±μ€€ 2313번: 보석 κ΅¬λ§€ν•˜κΈ°

https://www.acmicpc.net/problem/2313 λ¬Έμ œλ³΄μ„ κ°€κ²Œμ— μ—¬λŸ¬ κ°€μ§€μ˜ 보석이 μ§„μ—΄λ˜μ–΄ μžˆλ‹€. 각각의 보석은 μ •μˆ˜λ‘œ ν‘œν˜„λ˜λŠ” κ°€μΉ˜κ°€ μžˆλ‹€. λ•Œλ‘œλŠ” 저주받은 보석이 있기 λ•Œλ¬Έμ— κ°€μΉ˜κ°€ μŒμˆ˜κ°€ 될 μˆ˜λ„ μžˆλ‹€.보석듀은 총 n개의 쀄에 λ‚˜μ—΄λ˜μ–΄ μžˆλ‹€. 이제 당신은 각각의 μ€„μ—μ„œ λͺ‡ 개의 보석을 κ΅¬λ§€ν•˜λ € ν•œλ‹€. μ΄λ•Œ, 각 μ€„μ—μ„œ 보석을 ꡬ맀할 λ•Œ 연속적인 보석듀을 ꡬ맀해야 ν•œλ‹€. 즉, μ–΄λŠ ν•œ μ€„μ—μ„œ 1, 2번 보석을 ꡬ맀할 μˆ˜λ„ 있고, 2, 3번 보석을 ꡬ맀할 μˆ˜λ„ μžˆμ§€λ§Œ, 1, 3번 보석을 ꡬ맀할 μˆ˜λŠ” μ—†λ‹€.κ΅¬λ§€ν•˜λŠ” λ³΄μ„μ˜ κ°€μΉ˜μ˜ 총 합이 μ΅œλŒ€κ°€ λ˜λ„λ‘ 보석을 κ΅¬λ§€ν•˜λŠ” 방법을 μ°Ύμ•„λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.μž…λ ₯첫째 쀄에 μ •μˆ˜ n(1 ≤ n ≤ 1,000)이 주어진닀. λ‹€μŒ 2×n개의 쀄..

[BOJ][C++] λ°±μ€€ 1577번: λ„λ‘œμ˜ 개수

https://www.acmicpc.net/problem/1577 λ¬Έμ œμ„Έμ€€μ΄κ°€ μ‚΄κ³  μžˆλŠ” λ„μ‹œλŠ” μ‹ κΈ°ν•˜κ²Œ 생겼닀. 이 λ„μ‹œλŠ” κ²©μžν˜•νƒœλ‘œ 생겼고, μ§μ‚¬κ°ν˜•μ΄λ‹€. λ„μ‹œμ˜ κ°€λ‘œ ν¬κΈ°λŠ” N이고, μ„Έλ‘œ ν¬κΈ°λŠ” M이닀. 또, μ„Έμ€€μ΄μ˜ 집은 (0, 0)에 있고, μ„Έμ€€μ΄μ˜ ν•™κ΅λŠ” (N, M)에 μžˆλ‹€.λ”°λΌμ„œ, μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 생겼닀.μ„Έμ€€μ΄λŠ” μ§‘μ—μ„œ ν•™κ΅λ‘œ κ°€λŠ” 길의 경우의 μˆ˜κ°€ 총 λͺ‡ κ°œκ°€ μžˆλŠ”μ§€ κΆκΈˆν•΄μ§€κΈ° μ‹œμž‘ν–ˆλ‹€.μ„Έμ€€μ΄λŠ” 항상 μ΅œλ‹¨κ±°λ¦¬λ‘œλ§Œ κ°€κΈ° λ•Œλ¬Έμ—, 항상 λ„λ‘œλ₯Ό μ •ν™•ν•˜κ²Œ N + M개 κ±°μΉœλ‹€. ν•˜μ§€λ§Œ, 졜근 λ“€μ–΄ 이 λ„μ‹œμ˜ λ„λ‘œκ°€ 뢀싀곡사 의혹으둜 곡사쀑인 곳이 μžˆλ‹€. λ„λ‘œκ°€ 곡사 쀑일 λ•ŒλŠ”, 이 λ„λ‘œλ₯Ό 지날 수 μ—†λ‹€.(0, 0)μ—μ„œ (N, M)κΉŒμ§€ κ°€λŠ” μ„œλ‘œ λ‹€λ₯Έ 경둜의 경우의 수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€..

[BOJ][C++] λ°±μ€€ 4883번: 삼각 κ·Έλž˜ν”„

https://www.acmicpc.net/problem/4883 λ¬Έμ œμ΄ λ¬Έμ œλŠ” 삼각 κ·Έλž˜ν”„μ˜ κ°€μž₯ μœ„μͺ½ κ°€μš΄λ° μ •μ μ—μ„œ κ°€μž₯ μ•„λž˜μͺ½ κ°€μš΄λ° μ •μ μœΌλ‘œ κ°€λŠ” μ΅œλ‹¨ 경둜λ₯Ό μ°ΎλŠ” λ¬Έμ œμ΄λ‹€.삼각 κ·Έλž˜ν”„λŠ” 사이클이 μ—†λŠ” κ·Έλž˜ν”„λ‘œ N ≥ 2 개의 ν–‰κ³Ό 3μ—΄λ‘œ 이루어져 μžˆλ‹€. 삼각 κ·Έλž˜ν”„λŠ” 보톡 κ·Έλž˜ν”„μ™€ λ‹€λ₯΄κ²Œ 간선이 μ•„λ‹Œ 정점에 λΉ„μš©μ΄ μžˆλ‹€. μ–΄λ–€ 경둜의 λΉ„μš©μ€ κ·Έ κ²½λ‘œμ—μ„œ μ§€λ‚˜κ°„ μ •μ μ˜ λΉ„μš©μ˜ 합이닀.였λ₯Έμͺ½ 그림은 N = 4인 삼각 κ·Έλž˜ν”„μ΄κ³ , κ°€μž₯ μœ„μͺ½ κ°€μš΄λ° μ •μ μ—μ„œ κ°€μž₯ μ•„λž˜μͺ½ κ°€μš΄λ° μ •μ μœΌλ‘œ 경둜 쀑 μ•„λž˜λ‘œλ§Œ κ°€λŠ” 경둜의 λΉ„μš©μ€ 7+13+3+6 = 29κ°€ λœλ‹€. 삼각 κ·Έλž˜ν”„μ˜ 간선은 항상 였λ₯Έμͺ½ κ·Έλ¦Όκ³Ό 같은 ν˜•νƒœλ‘œ μ—°κ²°λ˜μ–΄ μžˆλ‹€.μž…λ ₯μž…λ ₯은 μ—¬λŸ¬ 개의 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ 이루어져 μžˆλ‹€. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 첫째..

[BOJ][C++] λ°±μ€€ 2688번: 쀄어듀지 μ•Šμ•„

https://www.acmicpc.net/problem/2688 λ¬Έμ œμ–΄λ–€ μˆ«μžκ°€ 쀄어듀지 μ•ŠλŠ”λ‹€λŠ” 것은 κ·Έ 숫자의 각 자리 μˆ˜λ³΄λ‹€ κ·Έ μ™Όμͺ½ 자리 μˆ˜κ°€ μž‘κ±°λ‚˜ 같을 λ•Œ 이닀.예λ₯Ό λ“€μ–΄, 1234λŠ” 쀄어듀지 μ•ŠλŠ”λ‹€. μ€„어듀지 μ•ŠλŠ” 4자리 수λ₯Ό 예λ₯Ό λ“€μ–΄ 보면 0011, 1111, 1112, 1122, 2223이 μžˆλ‹€. 쀄어듀지 μ•ŠλŠ” 4μžλ¦¬μˆ˜λŠ” 총 715κ°œκ°€ μžˆλ‹€.이 λ¬Έμ œμ—μ„œλŠ” 숫자의 μ•žμ— 0(leading zero)이 μžˆμ–΄λ„ λœλ‹€. 0000, 0001, 0002λŠ” μ˜¬λ°”λ₯Έ 쀄어듀지 μ•ŠλŠ” 4μžλ¦¬μˆ˜μ΄λ‹€.n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 쀄어듀지 μ•ŠλŠ” n자리 수의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.μž…λ ₯첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 T(1 좜λ ₯각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•΄ ν•œ 쀄에 ν•˜λ‚˜μ”© 쀄어듀지 μ•ŠλŠ” n자리 수의 개수λ₯Ό 좜λ ₯ν•œλ‹€..

[BOJ][C++] λ°±μ€€ 1904번: 01타일

https://www.acmicpc.net/problem/1904 λ¬Έμ œμ§€μ›μ΄μ—κ²Œ 2진 μˆ˜μ—΄μ„ κ°€λ₯΄μ³ μ£ΌκΈ° μœ„ν•΄, 지원이 μ•„λ²„μ§€λŠ” κ·Έμ—κ²Œ 타일듀을 μ„ λ¬Όν•΄μ£Όμ…¨λ‹€. 그리고 이 각각의 타일듀은 0 λ˜λŠ” 1이 μ“°μ—¬ μžˆλŠ” λ‚±μž₯의 타일듀이닀.μ–΄λŠ λ‚  짓ꢂ은 동주가 μ§€μ›μ΄μ˜ 곡뢀λ₯Ό λ°©ν•΄ν•˜κΈ° μœ„ν•΄ 0이 쓰여진 λ‚±μž₯의 타일듀을 λΆ™μ—¬μ„œ ν•œ 쌍으둜 이루어진 00 타일듀을 λ§Œλ“€μ—ˆλ‹€. κ²°κ΅­ ν˜„μž¬ 1 ν•˜λ‚˜λ§ŒμœΌλ‘œ 이루어진 타일 λ˜λŠ” 0타일을 두 개 뢙인 ν•œ 쌍의 00νƒ€μΌλ“€λ§Œμ΄ λ‚¨κ²Œ λ˜μ—ˆλ‹€.κ·ΈλŸ¬λ―€λ‘œ μ§€μ›μ΄λŠ” νƒ€μΌλ‘œ 더 이상 크기가 N인 λͺ¨λ“  2진 μˆ˜μ—΄μ„ λ§Œλ“€ 수 μ—†κ²Œ λ˜μ—ˆλ‹€. 예λ₯Ό λ“€μ–΄, N=1일 λ•Œ 1만 λ§Œλ“€ 수 있고, N=2일 λ•ŒλŠ” 00, 11을 λ§Œλ“€ 수 μžˆλ‹€. (01, 10은 λ§Œλ“€ 수 μ—†κ²Œ λ˜μ—ˆλ‹€.) λ˜ν•œ N=4일 λ•ŒλŠ” 0011..

[BOJ][C++] λ°±μ€€ 11722번: κ°€μž₯ κΈ΄ κ°μ†Œν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄

https://www.acmicpc.net/problem/11722 λ¬Έμ œμˆ˜μ—΄ Aκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, κ°€μž₯ κΈ΄ κ°μ†Œν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.예λ₯Ό λ“€μ–΄, μˆ˜μ—΄ A = {10, 30, 10, 20, 20, 10} 인 κ²½μš°μ— κ°€μž₯ κΈ΄ κ°μ†Œν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄μ€ A = {10, 30, 10, 20, 20, 10}  이고, κΈΈμ΄λŠ” 3이닀.μž…λ ₯첫째 쀄에 μˆ˜μ—΄ A의 크기 N (1 ≤ N ≤ 1,000)이 주어진닀.λ‘˜μ§Έ μ€„μ—λŠ” μˆ˜μ—΄ Aλ₯Ό 이루고 μžˆλŠ” Aiκ°€ 주어진닀. (1 ≤ Ai ≤ 1,000)좜λ ₯첫째 쀄에 μˆ˜μ—΄ A의 κ°€μž₯ κΈ΄ κ°μ†Œν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄μ˜ 길이λ₯Ό 좜λ ₯ν•œλ‹€. ν’€μ΄// 풀이 : https://whkakrkr.tistory.com#include #include #include using namespac..

[BOJ][C++] λ°±μ€€ 10164번: κ²©μžμƒμ˜ 경둜

https://www.acmicpc.net/problem/10164 λ¬Έμ œν–‰μ˜ μˆ˜κ°€ N이고 μ—΄μ˜ μˆ˜κ°€ M인 격자의 각 칸에 1λΆ€ν„° N×MκΉŒμ§€μ˜ λ²ˆν˜Έκ°€ 첫 ν–‰λΆ€ν„° μ‹œμž‘ν•˜μ—¬ μ°¨λ‘€λ‘œ λΆ€μ—¬λ˜μ–΄ μžˆλ‹€. 격자의 μ–΄λ–€ 칸은 β—‹ ν‘œμ‹œκ°€ λ˜μ–΄ μžˆλ‹€. (단, 1번 μΉΈκ³Ό N × M번 칸은 β—‹ ν‘œμ‹œκ°€ λ˜μ–΄ μžˆμ§€ μ•Šλ‹€. λ˜ν•œ, β—‹ ν‘œμ‹œκ°€ λ˜μ–΄ μžˆλŠ” 칸은 μ΅œλŒ€ ν•œ κ°œμ΄λ‹€. 즉, β—‹ ν‘œμ‹œκ°€ 된 칸이 없을 μˆ˜λ„ μžˆλ‹€.) ν–‰μ˜ μˆ˜κ°€ 3이고 μ—΄μ˜ μˆ˜κ°€ 5인 κ²©μžμ—μ„œ 각 칸에 λ²ˆν˜Έκ°€ 1λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ λΆ€μ—¬λœ μ˜ˆκ°€ μ•„λž˜μ— μžˆλ‹€. 이 κ²©μžμ—μ„œλŠ” 8번 칸에 β—‹ ν‘œμ‹œκ°€ λ˜μ–΄ μžˆλ‹€. κ²©μžμ˜ 1번 μΉΈμ—μ„œ μΆœλ°œν•œ μ–΄λ–€ λ‘œλ΄‡μ΄ μ•„λž˜μ˜ 두 쑰건을 λ§Œμ‘±ν•˜λ©΄μ„œ N×M번 칸으둜 κ°€κ³ μž ν•œλ‹€. μ‘°κ±΄ 1: λ‘œλ΄‡μ€ ν•œ λ²ˆμ— 였λ₯Έμͺ½μ— μΈμ ‘ν•œ μΉΈ λ˜λŠ” μ•„λž˜μ— μΈμ ‘ν•œ 칸으..

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

https://www.acmicpc.net/problem/1699 λ¬Έμ œμ–΄λ–€ μžμ—°μˆ˜ 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)좜λ ₯..

[BOJ][C++] λ°±μ€€ 8394번: μ•…μˆ˜

https://www.acmicpc.net/problem/8394 λ¬Έμ œνšŒμ˜κ°€ 끝났고, 이제 μ•…μˆ˜λ₯Ό ν•˜λŠ” μ‹œκ°„μ΄λ‹€. λͺ¨λ“  μ‚¬λžŒμ€ μ§μ‚¬κ°ν˜• νƒμž ν•˜λ‚˜μ˜ ν•œ 면에 μ•‰μ•„μžˆλ‹€.자리λ₯Ό λ²—μ–΄λ‚˜μ§€ μ•Šκ³  μ•…μˆ˜λ₯Ό ν•˜λŠ” λ°©λ²•μ˜ μˆ˜λŠ” 총 λͺ‡ κ°€μ§€μΌκΉŒ?각 μ‚¬λžŒλ“€μ€ μžμ‹ μ˜ μ™Όμͺ½μ΄λ‚˜ 였λ₯Έμͺ½μ— μžˆλŠ” μ‚¬λžŒλ“€κ³Ό μ•…μˆ˜λ₯Ό ν•  수 μžˆλ‹€. (μ•ˆ ν•  μˆ˜λ„ μžˆλ‹€)μž…λ ₯첫째 쀄에 νšŒμ˜μ— μ°Έμ„ν•œ μ‚¬λžŒμ˜ 수 n (1 ≤ n ≤ 10,000,000)이 주어진닀.좜λ ₯첫째 쀄에 μ•…μˆ˜λ₯Ό ν•˜λŠ” λ°©λ²•μ˜ 수λ₯Ό 좜λ ₯ν•œλ‹€. μˆ˜κ°€ 맀우 컀질 수 있기 λ•Œλ¬Έμ—, λ§ˆμ§€λ§‰ 자리만 좜λ ₯ν•œλ‹€. ν’€μ΄iλͺ…μ˜ μ‚¬λžŒλ“€μ΄ μ•…μˆ˜ν•˜λŠ” 경우의 수 쀑1. λ§ˆμ§€λ§‰ 두 μ‚¬λžŒμ΄ μ•…μˆ˜ν•˜λŠ” 경우의 수2. λ§ˆμ§€λ§‰ 두 μ‚¬λžŒμ΄ μ•…μˆ˜ν•˜μ§€ μ•ŠλŠ” 경우의 수라면, i+1λͺ…μ˜ μ‚¬λžŒλ“€μ΄ μ•…μˆ˜ν•˜λŠ” 경우의 μˆ˜λŠ”γ„±. 1번 &&..

λ°˜μ‘ν˜•