λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm

(81)
[Algorithm] ν˜Έν…” λ°© λ°°μ • πŸ“‹ 문제 [λ³Έ λ¬Έμ œλŠ” μ •ν™•μ„±κ³Ό νš¨μœ¨μ„± ν…ŒμŠ€νŠΈ 각각 μ μˆ˜κ°€ μžˆλŠ” λ¬Έμ œμž…λ‹ˆλ‹€.] "μŠ€λ…Έμš°νƒ€μš΄"μ—μ„œ ν˜Έν…”μ„ μš΄μ˜ν•˜κ³  μžˆλŠ” "μŠ€μΉ΄ν”Ό"λŠ” ν˜Έν…”μ— νˆ¬μˆ™ν•˜λ €λŠ” κ³ κ°λ“€μ—κ²Œ 방을 λ°°μ •ν•˜λ € ν•©λ‹ˆλ‹€. ν˜Έν…”μ—λŠ” 방이 총 k개 있으며, 각각의 방은 1λ²ˆλΆ€ν„° kλ²ˆκΉŒμ§€ 번호둜 κ΅¬λΆ„ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ²˜μŒμ—λŠ” λͺ¨λ“  방이 λΉ„μ–΄ 있으며 "μŠ€μΉ΄ν”Ό"λŠ” λ‹€μŒκ³Ό 같은 κ·œμΉ™μ— 따라 κ³ κ°μ—κ²Œ 방을 λ°°μ •ν•˜λ €κ³  ν•©λ‹ˆλ‹€. ν•œ λ²ˆμ— ν•œ λͺ…μ”© μ‹ μ²­ν•œ μˆœμ„œλŒ€λ‘œ 방을 λ°°μ •ν•©λ‹ˆλ‹€. 고객은 νˆ¬μˆ™ν•˜κΈ° μ›ν•˜λŠ” λ°© 번호λ₯Ό μ œμΆœν•©λ‹ˆλ‹€. 고객이 μ›ν•˜λŠ” 방이 λΉ„μ–΄ μžˆλ‹€λ©΄ μ¦‰μ‹œ λ°°μ •ν•©λ‹ˆλ‹€. 고객이 μ›ν•˜λŠ” 방이 이미 λ°°μ •λ˜μ–΄ 있으면 μ›ν•˜λŠ” 방보닀 λ²ˆν˜Έκ°€ ν¬λ©΄μ„œ λΉ„μ–΄μžˆλŠ” λ°© 쀑 κ°€μž₯ λ²ˆν˜Έκ°€ μž‘μ€ 방을 λ°°μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 방이 총 10개이고, 고객듀이 μ›ν•˜λŠ” λ°© λ²ˆν˜Έκ°€ μˆœμ„œλŒ€λ‘œ..
[Algorithm] ν‘œν˜„ κ°€λŠ₯ν•œ μ΄μ§„νŠΈλ¦¬ πŸ“‹ 문제 당신은 μ΄μ§„νŠΈλ¦¬λ₯Ό 수둜 ν‘œν˜„ν•˜λŠ” 것을 μ’‹μ•„ν•©λ‹ˆλ‹€. μ΄μ§„νŠΈλ¦¬λ₯Ό 수둜 ν‘œν˜„ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. μ΄μ§„μˆ˜λ₯Ό μ €μž₯ν•  빈 λ¬Έμžμ—΄μ„ μƒμ„±ν•©λ‹ˆλ‹€. μ£Όμ–΄μ§„ μ΄μ§„νŠΈλ¦¬μ— 더미 λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ 포화 μ΄μ§„νŠΈλ¦¬λ‘œ λ§Œλ“­λ‹ˆλ‹€. 루트 λ…Έλ“œλŠ” κ·ΈλŒ€λ‘œ μœ μ§€ν•©λ‹ˆλ‹€. λ§Œλ“€μ–΄μ§„ 포화 μ΄μ§„νŠΈλ¦¬μ˜ λ…Έλ“œλ“€μ„ κ°€μž₯ μ™Όμͺ½ λ…Έλ“œλΆ€ν„° κ°€μž₯ 였λ₯Έμͺ½ λ…Έλ“œκΉŒμ§€, μ™Όμͺ½μ— μžˆλŠ” μˆœμ„œλŒ€λ‘œ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€. λ…Έλ“œμ˜ λ†’μ΄λŠ” μ‚΄νŽ΄λ³΄λŠ” μˆœμ„œμ— 영ν–₯을 λΌμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‚΄νŽ΄λ³Έ λ…Έλ“œκ°€ 더미 λ…Έλ“œλΌλ©΄, λ¬Έμžμ—΄ 뒀에 0을 μΆ”κ°€ν•©λ‹ˆλ‹€. μ‚΄νŽ΄λ³Έ λ…Έλ“œκ°€ 더미 λ…Έλ“œκ°€ μ•„λ‹ˆλΌλ©΄, λ¬Έμžμ—΄ 뒀에 1을 μΆ”κ°€ν•©λ‹ˆλ‹€. λ¬Έμžμ—΄μ— μ €μž₯된 μ΄μ§„μˆ˜λ₯Ό μ‹­μ§„μˆ˜λ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€. μ΄μ§„νŠΈλ¦¬μ—μ„œ 리프 λ…Έλ“œκ°€ μ•„λ‹Œ λ…Έλ“œλŠ” μžμ‹ μ˜ μ™Όμͺ½ μžμ‹μ΄ 루트인 μ„œλΈŒνŠΈλ¦¬μ˜ λ…Έλ“œλ“€λ³΄λ‹€ 였λ₯Έμͺ½μ— 있으며, μžμ‹ μ˜ 였λ₯Έμͺ½ μžμ‹..
[Algorithm] 숫자 νƒ€μž λŒ€νšŒ πŸ“‹ 문제 μœ„μ™€ 같은 λͺ¨μ–‘μœΌλ‘œ λ°°μ—΄λœ 숫자 자판이 μžˆμŠ΅λ‹ˆλ‹€. 숫자 νƒ€μž λŒ€νšŒλŠ” 이 λ™μΌν•œ μžνŒμ„ μ‚¬μš©ν•˜μ—¬ 숫자둜만 이루어진 κΈ΄ λ¬Έμžμ—΄μ„ λˆ„κ°€ κ°€μž₯ λΉ λ₯΄κ²Œ νƒ€μ΄ν•‘ν•˜λŠ”μ§€ κ²¨λ£¨λŠ” λŒ€νšŒμž…λ‹ˆλ‹€. λŒ€νšŒμ— μ°Έκ°€ν•˜λ €λŠ” λ―Όν¬λŠ” 두 μ—„μ§€ 손가락을 μ΄μš©ν•˜μ—¬ 타이핑을 ν•©λ‹ˆλ‹€. λ―Όν¬λŠ” 항상 왼손 μ—„μ§€λ₯Ό 4 μœ„μ—, 였λ₯Έμ† μ—„μ§€λ₯Ό 6 μœ„μ— 두고 타이핑을 μ‹œμž‘ν•©λ‹ˆλ‹€. μ—„μ§€ 손가락을 움직여 λ‹€μŒ 숫자λ₯Ό λˆ„λ₯΄λŠ” λ°μ—λŠ” 일정 μ‹œκ°„μ΄ λ“­λ‹ˆλ‹€. λ―Όν¬λŠ” μ–΄λ–€ 두 숫자λ₯Ό μ—°μ†μœΌλ‘œ μž…λ ₯ν•˜λŠ” μ‹œκ°„ λΉ„μš©μ„ λͺ‡λͺ‡ κ°€μ€‘μΉ˜λ‘œ λΆ„λ₯˜ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ΄λ™ν•˜μ§€ μ•Šκ³  μ œμžλ¦¬μ—μ„œ λ‹€μ‹œ λˆ„λ₯΄λŠ” 것은 κ°€μ€‘μΉ˜κ°€ 1μž…λ‹ˆλ‹€. μƒν•˜μ’Œμš°λ‘œ μΈμ ‘ν•œ 숫자둜 μ΄λ™ν•˜μ—¬ λˆ„λ₯΄λŠ” 것은 κ°€μ€‘μΉ˜κ°€ 2μž…λ‹ˆλ‹€. λŒ€κ°μ„ μœΌλ‘œ μΈμ ‘ν•œ 숫자둜 μ΄λ™ν•˜μ—¬ λˆ„λ₯΄λŠ” 것은 κ°€μ€‘μΉ˜κ°€ 3μž…λ‹ˆλ‹€. κ°™μ§€ μ•Šκ³  μΈμ ‘ν•˜μ§€ μ•Šμ€..
[Algorithm] 금과 은 μš΄λ°˜ν•˜κΈ° πŸ“‹ 문제 μ–΄λŠ 왕ꡭ에 ν•˜λ‚˜ μ΄μƒμ˜ λ„μ‹œλ“€μ΄ μžˆμŠ΅λ‹ˆλ‹€. μ™•κ΅­μ˜ 왕은 μƒˆ λ„μ‹œλ₯Ό μ§“κΈ°λ‘œ κ²°μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή λ„μ‹œλ₯Ό μ§“κΈ° μœ„ν•΄μ„œλŠ” λ„μ‹œλ₯Ό μ§“λŠ” μž₯μ†Œμ— 금 a kgκ³Ό 은 b kg이 μ „λ‹¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 각 λ„μ‹œμ—λŠ” λ²ˆν˜Έκ°€ 맀겨져 μžˆλŠ”λ°, i번 λ„μ‹œμ—λŠ” 금 g[i] kg, 은 s[i] kg, 그리고 트럭 ν•œ λŒ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. i번 λ„μ‹œμ˜ νŠΈλŸ­μ€ 였직 μƒˆ λ„μ‹œλ₯Ό μ§“λŠ” 건섀 μž₯μ†Œμ™€ i번 λ„μ‹œλ§Œμ„ 왕볡할 수 있으며, νŽΈλ„λ‘œ μ΄λ™ν•˜λŠ” 데 t[i] μ‹œκ°„μ΄ 걸리고, μ΅œλŒ€ w[i] kg 광물을 μš΄λ°˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. (광물은 금과 μ€μž…λ‹ˆλ‹€. 즉, 금과 은을 λ™μ‹œμ— μš΄λ°˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.) λͺ¨λ“  νŠΈλŸ­μ€ 같은 λ„λ‘œλ₯Ό μ—¬λŸ¬ 번 왕볡할 수 있으며 μ—°λ£ŒλŠ” λ¬΄ν•œλŒ€λΌκ³  κ°€μ •ν•©λ‹ˆλ‹€. μ •μˆ˜ a, b와 μ •μˆ˜ λ°°μ—΄ g, s, w, tκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Ό..
[Algorithm] 연속 νŽ„μŠ€ λΆ€λΆ„ μˆ˜μ—΄μ˜ ν•© πŸ“‹ 문제 μ–΄λ–€ μˆ˜μ—΄μ˜ 연속 λΆ€λΆ„ μˆ˜μ—΄μ— 같은 길이의 νŽ„μŠ€ μˆ˜μ—΄μ„ 각 μ›μ†ŒλΌλ¦¬ κ³±ν•˜μ—¬ 연속 νŽ„μŠ€ λΆ€λΆ„ μˆ˜μ—΄μ„ λ§Œλ“€λ € ν•©λ‹ˆλ‹€. νŽ„μŠ€ μˆ˜μ—΄μ΄λž€ [1, -1, 1, -1 …] λ˜λŠ” [-1, 1, -1, 1 …] κ³Ό 같이 1 λ˜λŠ” -1둜 μ‹œμž‘ν•˜λ©΄μ„œ 1κ³Ό -1이 λ²ˆκ°ˆμ•„ λ‚˜μ˜€λŠ” μˆ˜μ—΄μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μˆ˜μ—΄ [2, 3, -6, 1, 3, -1, 2, 4]의 연속 λΆ€λΆ„ μˆ˜μ—΄ [3, -6, 1]에 νŽ„μŠ€ μˆ˜μ—΄ [1, -1, 1]을 κ³±ν•˜λ©΄ 연속 νŽ„μŠ€ λΆ€λΆ„μˆ˜μ—΄μ€ [3, 6, 1]이 λ©λ‹ˆλ‹€. 또 λ‹€λ₯Έ μ˜ˆμ‹œλ‘œ 연속 λΆ€λΆ„ μˆ˜μ—΄ [3, -1, 2, 4]에 νŽ„μŠ€ μˆ˜μ—΄ [-1, 1, -1, 1]을 κ³±ν•˜λ©΄ 연속 νŽ„μŠ€ λΆ€λΆ„μˆ˜μ—΄μ€ [-3, -1, -2, 4]이 λ©λ‹ˆλ‹€. μ •μˆ˜ μˆ˜μ—΄ sequenceκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 연속 νŽ„μŠ€ λΆ€λΆ„ μˆ˜μ—΄μ˜..
[Algorithm] κ±°μŠ€λ¦„λˆ πŸ“‹ 문제 Finn은 νŽΈμ˜μ μ—μ„œ μ•Όκ°„ μ•„λ₯΄λ°”μ΄νŠΈλ₯Ό ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 야간에 μ†λ‹˜μ΄ λ„ˆλ¬΄ μ—†μ–΄ μ‹¬μ‹¬ν•œ Finn은 μ†λ‹˜λ“€κ»˜ κ±°μŠ€λ¦„λˆμ„ n 원을 쀄 λ•Œ λ°©λ²•μ˜ 경우의 수λ₯Ό κ΅¬ν•˜κΈ°λ‘œ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄μ„œ μ†λ‹˜κ»˜ 5원을 거슬러 μ€˜μ•Ό ν•˜κ³  1원, 2원, 5원이 μžˆλ‹€λ©΄ λ‹€μŒκ³Ό 같이 4κ°€μ§€ λ°©λ²•μœΌλ‘œ 5원을 거슬러 쀄 수 μžˆμŠ΅λ‹ˆλ‹€. 1원을 5개 μ‚¬μš©ν•΄μ„œ 거슬러 μ€€λ‹€. 1원을 3개 μ‚¬μš©ν•˜κ³ , 2원을 1개 μ‚¬μš©ν•΄μ„œ 거슬러 μ€€λ‹€. 1원을 1개 μ‚¬μš©ν•˜κ³ , 2원을 2개 μ‚¬μš©ν•΄μ„œ 거슬러 μ€€λ‹€. 5원을 1개 μ‚¬μš©ν•΄μ„œ 거슬러 μ€€λ‹€. 거슬러 μ€˜μ•Ό ν•˜λŠ” κΈˆμ•‘ nκ³Ό Finn이 ν˜„μž¬ λ³΄μœ ν•˜κ³  μžˆλŠ” 돈의 μ’…λ₯˜ moneyκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, Finn이 n 원을 거슬러 쀄 λ°©λ²•μ˜ 수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄ μ£Όμ„Έμš”..
[Algorithm] 외벽점검 πŸ“‹ 문제 λ ˆμŠ€ν† λž‘μ„ μš΄μ˜ν•˜κ³  μžˆλŠ” "μŠ€μΉ΄ν”Ό"λŠ” λ ˆμŠ€ν† λž‘ λ‚΄λΆ€κ°€ λ„ˆλ¬΄ λ‚‘μ•„ μΉœκ΅¬λ“€κ³Ό ν•¨κ»˜ 직접 리λͺ¨λΈλ§ ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€. λ ˆμŠ€ν† λž‘μ΄ μžˆλŠ” 곳은 μŠ€λ…Έμš°νƒ€μš΄μœΌλ‘œ 맀우 μΆ”μš΄ μ§€μ—­μ΄μ–΄μ„œ λ‚΄λΆ€ 곡사λ₯Ό ν•˜λŠ” 도쀑에 주기적으둜 μ™Έλ²½μ˜ μƒνƒœλ₯Ό 점검해야 ν•  ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ ˆμŠ€ν† λž‘μ˜ κ΅¬μ‘°λŠ” μ™„μ „νžˆ λ™κ·Έλž€ λͺ¨μ–‘이고 μ™Έλ²½μ˜ 총 λ‘˜λ ˆλŠ” n미터이며, μ™Έλ²½μ˜ λͺ‡λͺ‡ 지점은 μΆ”μœ„κ°€ 심할 경우 손상될 μˆ˜λ„ μžˆλŠ” μ·¨μ•½ν•œ 지점듀이 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ‚΄λΆ€ 곡사 도쀑에도 μ™Έλ²½μ˜ μ·¨μ•½ 지점듀이 μ†μƒλ˜μ§€ μ•Šμ•˜λŠ” μ§€, 주기적으둜 μΉœκ΅¬λ“€μ„ λ³΄λ‚΄μ„œ 점검을 ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ, λΉ λ₯Έ 곡사 진행을 μœ„ν•΄ 점검 μ‹œκ°„μ„ 1μ‹œκ°„μœΌλ‘œ μ œν•œν–ˆμŠ΅λ‹ˆλ‹€. μΉœκ΅¬λ“€μ΄ 1μ‹œκ°„ λ™μ•ˆ 이동할 수 μžˆλŠ” κ±°λ¦¬λŠ” 제각각이기 λ•Œλ¬Έμ—, μ΅œμ†Œν•œμ˜ μΉœκ΅¬λ“€μ„ νˆ¬μž…ν•΄ μ·¨μ•½ 지점을 μ κ²€ν•˜κ³  ..
[Algorithm] ν…Œμ΄λΈ” ν•΄μ‹œ ν•¨μˆ˜ πŸ“‹ 문제 μ™„ν˜Έκ°€ κ΄€λ¦¬ν•˜λŠ” μ–΄λ–€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν•œ ν…Œμ΄λΈ”μ€ λͺ¨λ‘ μ •μˆ˜ νƒ€μž…μΈ μ»¬λŸΌλ“€λ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€. ν…Œμ΄λΈ”μ€ 2차원 ν–‰λ ¬λ‘œ ν‘œν˜„ν•  수 있으며 열은 μ»¬λŸΌμ„ λ‚˜νƒ€λ‚΄κ³ , 행은 νŠœν”Œμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 첫 번째 μ»¬λŸΌμ€ κΈ°λ³Έν‚€λ‘œμ„œ λͺ¨λ“  νŠœν”Œμ— λŒ€ν•΄ κ·Έ 값이 μ€‘λ³΅λ˜μ§€ μ•Šλ„λ‘ 보μž₯λ©λ‹ˆλ‹€. μ™„ν˜ΈλŠ” 이 ν…Œμ΄λΈ”μ— λŒ€ν•œ ν•΄μ‹œ ν•¨μˆ˜λ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ν•΄μ‹œ ν•¨μˆ˜λŠ” col, row_begin, row_end을 μž…λ ₯으둜 λ°›μŠ΅λ‹ˆλ‹€. ν…Œμ΄λΈ”μ˜ νŠœν”Œμ„ col번째 컬럼의 값을 κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ 정렬을 ν•˜λ˜, λ§Œμ•½ κ·Έ 값이 λ™μΌν•˜λ©΄ 기본킀인 첫 번째 컬럼의 값을 κΈ°μ€€μœΌλ‘œ λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ν•©λ‹ˆλ‹€. μ •λ ¬λœ λ°μ΄ν„°μ—μ„œ S_iλ₯Ό i 번째 ν–‰μ˜ νŠœν”Œμ— λŒ€ν•΄ 각 컬럼의 값을 i 둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ“€μ˜ ν•©μœΌλ‘œ μ •μ˜ν•©λ‹ˆλ‹€. row_begin ≤ i ..