BSP μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•œ 랜덀 맡 생성 γ…‘λ‘œκ·ΈλΌμ΄ν¬
Β·
κ²Œμž„κ°œλ°œ
μ•žμ„  둜그라이크 맡 생성 방식 글을 톡해 ν˜„μž¬ κ°€μž₯ 보편적으둜 μ‚¬μš©λ˜λŠ” 둜그라이크 맡 생성 μ•Œκ³ λ¦¬μ¦˜ 쀑 ν•˜λ‚˜κ°€ BSP μ•Œκ³ λ¦¬μ¦˜μ΄λΌλŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 이제, 이λ₯Ό 직접 κ΅¬ν˜„ν•΄λ³΄λ©° 곡뢀해보렀고 ν•©λ‹ˆλ‹€. λ¨Όμ €, BSP μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•œ 랜덀 맡 생성 μ•Œκ³ λ¦¬μ¦˜μ˜ μ ˆμ°¨λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 곡간을 두 개둜 κ³„μ†ν•΄μ„œ λ‚˜λˆˆλ‹€. (λ‚˜λˆˆ 곡간을 트리둜 ꡬ성) λ‚˜λˆˆ 곡간에 곡간을 λ²—μ–΄λ‚˜μ§€ μ•ŠλŠ” 크기의 방을 λ§Œλ“ λ‹€. 방끼리 μ„œλ‘œ 이어쀀닀. 1. 곡간을 두 개둜 κ³„μ†ν•΄μ„œ λ‚˜λˆˆλ‹€. BSP μ•Œκ³ λ¦¬μ¦˜μ΄ μ‹€μ§ˆμ μœΌλ‘œ μ‚¬μš©λ˜λŠ” λ‹¨κ³„λ‘œ μ΄λ¦„μ—μ„œλ„ μ•Œ 수 μžˆλ“―μ΄ Binary Space Partitioning, 즉 곡간을 두 개둜 λ‚˜λˆ„μ–΄ 트리둜 μ €μž₯ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. BSP μ•Œκ³ λ¦¬μ¦˜ μžμ²΄λŠ” μ–΄λ–€ λͺ¨μ–‘μ˜ κ³΅κ°„μœΌλ‘œλ“  λ‚˜λˆŒ 수 μžˆμ§€λ§Œ μ €..
λ°±μ€€ 12094 - 2048 (Hard) [파이썬]
Β·
μ•Œκ³ λ¦¬μ¦˜ 문제
풀이이전에 ν’€μ—ˆλ˜ 2048 (Easy) 문제의 풀이 λ°©λ²•μ—μ„œλŠ” λͺ¨λ“  경우의 수λ₯Ό νƒμƒ‰ν•˜μ—¬ 닡을 λ„μΆœν–ˆλ‹€λ©΄ 2048 (Hard)λŠ” 10회의 μ΄λ™μœΌλ‘œ ν™•μž₯λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 적절히 κ°€μ§€μΉ˜κΈ°λ₯Ό ν•˜μ—¬ μ‹œκ°„μ„ 쀄여 닡을 λ„μΆœν•΄μ•Ό ν•©λ‹ˆλ‹€. 그럼, μ–΄λ–€ 경우λ₯Ό κ°€μ§€μΉ˜κΈ°ν•΄μ£Όμ–΄μ•Ό ν• κΉŒμš”?  λΈ”둝듀을 μ΄λ™μ‹œμΌ°λŠ”λ° 이전과 같은 λͺ¨μŠ΅μΌ κ²½μš°λ‹¨μˆœν•˜κ²Œ 생각해봀을 λ•Œ κ°€μž₯ λ¨Όμ € λ– μ˜€λ₯΄λŠ” λ°©λ²•μž…λ‹ˆλ‹€. μ–΄λ–€ ν•œ κ²½μš°μ— λŒ€ν•˜μ—¬ μƒν•˜μ’Œμš°λ₯Ό λͺ¨λ‘ κ΅¬ν•˜κΈ° λ•Œλ¬Έμ— μƒν•˜μ’Œμš° 쀑 같은 λͺ¨μ–‘을 가진 κ²½μš°κ°€ λ°œμƒν•˜λ©΄ μ• μ΄ˆμ— 탐색할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. μ€‘λ³΅λœ 경우λ₯Ό νƒμƒ‰ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.  κ΅¬ν•œ μ΅œλŒ“κ°’μ΄ 이전에 κ΅¬ν•œ 것보닀 μž‘μ„ κ²ƒμ΄λΌλŠ” 게 μ˜ˆμƒλ˜λŠ” 경우이 κ²½μš°λŠ” 저도 λ°±μ€€ 질문 κ²€μƒ‰μ—μ„œ μ–»μ–΄λ‚Έ ν•΄λ‹΅μž…λ‹ˆλ‹€. μ˜ˆλ₯Ό λ“€μ–΄ μ²˜μŒμ— μ΅œλŒ€ 10회 이동에 λŒ€ν•΄ νƒμƒ‰ν•˜μ˜€λ”..
λ°±μ€€ 12100 - 2048 (Easy) [파이썬]
Β·
μ•Œκ³ λ¦¬μ¦˜ 문제
풀이λͺ¨λ“  경우의 μˆ˜μ— λŒ€ν•΄μ„œ 검사λ₯Ό 해봐야 μ–΄λ–€ κ²½μš°μ— κ°€μž₯ 큰 μˆ˜κ°€ λ§Œλ“€μ–΄μ§€λŠ”μ§€ μ•Œ 수 μžˆλŠ” λ¬Έμ œμž…λ‹ˆλ‹€.κ·Έλž˜μ„œ, 풀이 방법은 ‘λ°±νŠΈλž˜ν‚Ή’을 μ΄μš©ν•˜μ—¬ λͺ¨λ“  경우의 수λ₯Ό κ²€μ‚¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ°±νŠΈλž˜ν‚Ή 자체의 κ΅¬ν˜„μ€ 어렡지 μ•Šμ§€λ§Œ 각 μˆ˜λ“€μ„ move ν•˜λŠ” 것에 μ‹œκ°„μ΄ μ’€ 걸렸던 λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€.μœ„, μ•„λž˜ 이동은 rowλ₯Ό μ΄λ™ν•˜λ©΄μ„œ κ°±μ‹ ν•΄μ•Όν•˜κ³ μ™Όμͺ½, 였λ₯Έμͺ½ 이동은 column을 μ΄λ™ν•˜λ©΄μ„œ κ°±μ‹ ν•΄μ•Όν•©λ‹ˆλ‹€. κ° 칸에 λŒ€ν•˜μ—¬ μ„ νƒλœ μΉΈ 뒀에 λ‚¨μ•„μžˆλŠ” 칸을 μˆœμ„œλŒ€λ‘œ κ²€μ‚¬ν•˜λ©΄μ„œ λ‚¨μ•„μžˆλŠ” 칸이 0이면 λ„˜μ–΄κ°€κ³ , 0이 μ•„λ‹ˆλ©΄ μ„ νƒλœ μΉΈ(0이 μ•„λ‹ˆλ©΄)κ³Ό ν•©μΉ˜κ±°λ‚˜ ν˜Ήμ€ μ„ νƒλœ μΉΈ(0이면)에 κ·Έ 칸의 값을 μ΄λ™μ‹œμΌ°μŠ΅λ‹ˆλ‹€. μ„ νƒλœ μΉΈκ³Ό λ‚¨μ•„μžˆλŠ” 칸이 ν•©μ³μ‘Œλ‹€λ©΄ λ‹€μŒ 칸으둜 λ„˜μ–΄κ°€μ„œ 같은 과정을 λ°˜λ³΅ν•˜λ©΄ λ˜μ§€λ§Œ, λ§Œμ•½ μ„ νƒλœ 칸이 0이..
λ°±μ€€ 1541 - μžƒμ–΄λ²„λ¦° μ•”ν˜Έ [μžλ°”]
Β·
μ•Œκ³ λ¦¬μ¦˜ 문제
* 개인적인 κΈ°λ‘μš©μž…λ‹ˆλ‹€.https://www.acmicpc.net/problem/1541 μ™œ 그리디인가?‘+’와 ‘-‘ 그리고 ‘수’둜 κ΅¬μ„±λœ 식이 μžˆμ„ λ•Œ κ·Έ 식을 μ΅œμ†Œλ‘œ λ§Œλ“œλŠ” 계산법을 μ°ΎλŠ” 것인데, λ§Œμ•½ μ‹μ—μ„œ ‘-‘λ₯Ό λΉΌλŠ” κ²ƒμœΌλ‘œ μƒκ°ν•˜λ©΄ ‘-‘ 식 계산 후에 λ”ν•˜λŠ” 식이 또 μžˆλ‹€λ©΄ ν•„μ—°μ μœΌλ‘œ 결과값이 점점 μ»€μ§€κ²Œ λ©λ‹ˆλ‹€. κ·Έλž˜μ„œ μ΅œμ†Ÿκ°’μ΄ μ ˆλŒ€ 될 수 μ—†μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ ‘-‘λ₯Ό 음수둜 λ°”κΎΈλŠ” κ²ƒμœΌλ‘œ μƒκ°ν•œλ‹€λ©΄ ‘-‘ λ’€μ˜ λ”ν•˜λŠ” 식듀을 μ΄μš©ν•˜μ—¬ μ΅œμ†Ÿκ°’μ„ λ§Œλ“€ 수 있게 λ©λ‹ˆλ‹€! 즉, μŒμˆ˜λŠ” μ ˆλŒ“κ°’μ΄ 클수둝 더 μž‘μ€ κ°’μž„μ„ μ΄μš©ν•˜λŠ” 것이죠. 예λ₯Ό λ“€μ–΄, 10+20-30+40+50+60-70κ³Ό 같은 식이 μžˆλ‹€λ©΄ λ‹€μŒκ³Ό 같이 λ¬Άμ–΄μ£Όμ–΄ 10+20-(30+40+50+60)-70 κ³„μ‚°ν•˜λ©΄ μ΅œμ†Ÿκ°’μ΄ 됨을 μ•Œ ..