728x90
λ°˜μ‘ν˜•

Python 42

[μ•Œκ³ λ¦¬μ¦˜] 이진 탐색 / 이뢄 탐색 (Binary Search)

이진 탐색은 μ •λ ¬λœ λ¦¬μŠ€νŠΈμ— μ μš©ν•  수 μžˆλŠ” κ°„λ‹¨ν•œ 고속 탐색 기법이며, 이뢄 탐색이라고도 λΆˆλ¦°λ‹€. 순차 탐색 리슀트 μ•ˆμ— μžˆλŠ” νŠΉμ •ν•œ 데이터λ₯Ό μ°ΎκΈ° μœ„ν•΄ μ•žμ—μ„œλΆ€ν„° 데이터λ₯Ό ν•˜λ‚˜μ”© ν™•μΈν•˜λŠ” 방법이닀. 이진 탐색 μ •λ ¬λ˜μ–΄ μžˆλŠ” λ¦¬μŠ€νŠΈμ—μ„œ 탐색 λ²”μœ„λ₯Ό μ ˆλ°˜μ”© μ’ν˜€κ°€λ©° 데이터λ₯Ό νƒμƒ‰ν•˜λŠ” 방법이닀. 이진 탐색은 μ‹œμž‘μ , 끝점, 쀑간점을 μ΄μš©ν•˜μ—¬ 탐색 λ²”μœ„λ₯Ό μ„€μ •ν•œλ‹€. 이진 탐색 (이뢄 탐색) μ•Œκ³ λ¦¬μ¦˜ μ •λ ¬λ˜μ–΄ μžˆλŠ” λ¦¬μŠ€νŠΈμ—μ„œ 탐색 λ²”μœ„λ₯Ό μ ˆλ°˜μ”© μ’ν˜€κ°€λ©° 데이터λ₯Ό νƒμƒ‰ν•˜λŠ” 방법이닀. λ°°μ—΄ λ‚΄λΆ€μ˜ 데이터가 μ •λ ¬λ˜μ–΄ μžˆμ–΄μ•Όλ§Œ μ‚¬μš©ν•  수 μžˆλŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. μ‹œμž‘μ , 끝점, 쀑간점(start, end, mid) λ³€μˆ˜ 3개λ₯Ό μ‚¬μš©ν•˜μ—¬ νƒμƒ‰ν•œλ‹€. μ°ΎμœΌλ €λŠ” 데이터와 쀑간점 μœ„μΉ˜μ— μžˆλŠ” 데이터λ₯Ό 반볡적으둜 λΉ„κ΅ν•΄μ„œ μ›ν•˜λŠ” 데..

Algorithm 2023.08.17

[λ°±μ€€] 2437 μ €μšΈ (파이썬)

κ³¨λ“œ β…‘ https://www.acmicpc.net/problem/2437 2437번: μ €μšΈ ν•˜λ‚˜μ˜ μ–‘νŒ” μ €μšΈμ„ μ΄μš©ν•˜μ—¬ 물건의 무게λ₯Ό μΈ‘μ •ν•˜λ €κ³  ν•œλ‹€. 이 μ €μšΈμ˜ μ–‘ νŒ”μ˜ λμ—λŠ” λ¬Όκ±΄μ΄λ‚˜ μΆ”λ₯Ό μ˜¬λ €λ†“λŠ” μ ‘μ‹œκ°€ 달렀 있고, μ–‘νŒ”μ˜ κΈΈμ΄λŠ” κ°™λ‹€. λ˜ν•œ, μ €μšΈμ˜ ν•œμͺ½μ—λŠ” μ €μšΈμΆ”λ“€λ§Œ 놓 www.acmicpc.net πŸ“„ 문제 ν•˜λ‚˜μ˜ μ–‘νŒ” μ €μšΈμ„ μ΄μš©ν•˜μ—¬ 물건의 무게λ₯Ό μΈ‘μ •ν•˜λ €κ³  ν•œλ‹€. μ €μšΈμ˜ ν•œμͺ½μ—λŠ” μ €μšΈμΆ”λ“€λ§Œ 놓을 수 있고, λ‹€λ₯Έ μͺ½μ—λŠ” 무게λ₯Ό μΈ‘μ •ν•˜λ €λŠ” 물건만 μ˜¬λ €λ†“μ„ 수 μžˆλ‹€. λ¬΄κ²Œκ°€ μ–‘μ˜ μ •μˆ˜μΈ N개의 μ €μšΈμΆ”κ°€ μ£Όμ–΄μ§ˆ λ•Œ, 이 좔듀을 μ‚¬μš©ν•˜μ—¬ μΈ‘μ •ν•  수 μ—†λŠ” μ–‘μ˜ μ •μˆ˜ 무게 쀑 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. πŸ’‘ 아이디어 그리디 μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. μΆ”μ˜ 무게λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€. 적은 λ¬΄κ²ŒλΆ€ν„° 더해..

[λ°±μ€€] 21758 κΏ€ λ”°κΈ° (파이썬)

κ³¨λ“œ β…€ https://www.acmicpc.net/problem/21758 21758번: κΏ€ λ”°κΈ° 첫 번째 쀄에 κ°€λŠ₯ν•œ μ΅œλŒ€μ˜ κΏ€μ˜ 양을 좜λ ₯ν•œλ‹€. www.acmicpc.net πŸ“„ 문제 N개의 μž₯μ†Œκ°€ μžˆλ‹€. μž₯μ†Œλ“€ 쀑 μ„œλ‘œ λ‹€λ₯Έ 두 곳을 κ³¨λΌμ„œ λ²Œμ„ ν•œ λ§ˆλ¦¬μ”© λ‘”λ‹€. 또, λ‹€λ₯Έ ν•œ μž₯μ†Œλ₯Ό κ³¨λΌμ„œ λ²Œν†΅μ„ λ‘”λ‹€ 두 마리 λ²Œμ€ λ²Œν†΅μœΌλ‘œ λ˜‘λ°”λ‘œ λ‚ μ•„κ°€λ©΄μ„œ μ§€λ‚˜κ°€λŠ” λͺ¨λ“  μΉΈμ—μ„œ 꿀을 λ”΄λ‹€. 각 μž₯μ†Œμ— 적힌 μˆ«μžλŠ” 벌이 μ§€λ‚˜κ°€λ©΄μ„œ 꿀을 λ”Έ 수 μžˆλŠ” 양이닀. 두 λ§ˆλ¦¬κ°€ λͺ¨λ‘ μ§€λ‚˜κ°„ μž₯μ†Œμ—μ„œλŠ” 두 마리 λͺ¨λ‘ ν‘œμ‹œλœ μ–‘λ§ŒνΌμ˜ 꿀을 λ”΄λ‹€. (λ²Œν†΅μ΄ μžˆλŠ” μž₯μ†Œμ—μ„œλ„ κ°™λ‹€.) 벌이 μ‹œμž‘ν•œ μž₯μ†Œμ—μ„œλŠ” μ–΄λ–€ λ²Œλ„ 꿀을 λ”Έ 수 μ—†λ‹€. λ²Œλ“€μ΄ λ”Έ 수 μžˆλŠ” κ°€λŠ₯ν•œ μ΅œλŒ€μ˜ κΏ€μ˜ 양을 κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ. πŸ’‘ 아이디어 그리디 ..

[λ°±μ€€] 1261 μ•Œκ³ μŠ€νŒŸ (파이썬)

κ³¨λ“œ β…£ https://www.acmicpc.net/problem/1261 1261번: μ•Œκ³ μŠ€νŒŸ 첫째 쀄에 미둜의 크기λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°€λ‘œ 크기 M, μ„Έλ‘œ 크기 N (1 ≤ N, M ≤ 100)이 주어진닀. λ‹€μŒ N개의 μ€„μ—λŠ” 미둜의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 숫자 0κ³Ό 1이 주어진닀. 0은 빈 방을 μ˜λ―Έν•˜κ³ , 1은 벽을 의미 www.acmicpc.net πŸ“„ 문제 λ―Έλ‘œλŠ” N*M 크기이며, 총 1*1 크기의 방으둜 이루어져 μžˆλ‹€. λ―Έλ‘œλŠ” 빈 λ°© λ˜λŠ” 벽으둜 이루어져 있고, 빈 방은 자유둭게 닀닐 수 μžˆμ§€λ§Œ, 벽은 λΆ€μˆ˜μ§€ μ•ŠμœΌλ©΄ 이동할 수 μ—†λ‹€. μ–΄λ–€ λ°©μ—μ„œ 이동할 수 μžˆλŠ” 방은 μƒν•˜μ’Œμš°λ‘œ μΈμ ‘ν•œ 빈 방이닀. 즉, ν˜„μž¬ μš΄μ˜μ§„μ΄ (x, y)에 μžˆμ„ λ•Œ, 이동할 수 μžˆλŠ” 방은 (x+1, y), (x, y+1), (x-1, ..

[μ†Œν”„ν‹°μ–΄] [인증평가(5μ°¨) 기좜] 업무 처리 (파이썬) (2)

λ‚œμ΄λ„ : β˜…β˜…β˜…β˜†β˜† https://softeer.ai/practice/info.do?idx=1&eid=1256&sw_prbl_sbms_sn=245958 Softeer μ—°μŠ΅λ¬Έμ œλ₯Ό 담을 Set을 μ„ νƒν•΄μ£Όμ„Έμš”. μ·¨μ†Œ 확인 softeer.ai πŸ“„ 문제 μ–΄λ–€ λΆ€μ„œμ˜ 업무 쑰직은 μ™„μ „μ΄μ§„νŠΈλ¦¬ λͺ¨μ–‘이닀. λͺ¨λ“  말단 직원은 λΆ€μ„œμž₯κΉŒμ§€ μ˜¬λΌκ°€λŠ” 거리가 λ™μΌν•˜λ‹€. (ν¬ν™”μ΄μ§„νŠΈλ¦¬) 말단 μ§μ›λ“€λ§Œ 각각 K개의 μˆœμ„œκ°€ 정해진 업무λ₯Ό 가지고 μžˆλ‹€. λŒ€κΈ°ν•˜λŠ” 업무가 μžˆλŠ” 경우, 직원듀은 업무가 올라온 μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜ μ²˜λ¦¬ν•΄μ„œ μƒμ‚¬μ—κ²Œ μ˜¬λ¦°λ‹€. 단, ν™€μˆ˜ 번째 λ‚ μ§œμ—λŠ” μ™Όμͺ½ λΆ€ν•˜ 직원이 올린 업무λ₯Ό, 짝수 번째 λ‚ μ§œμ—λŠ” 였λ₯Έμͺ½ λΆ€ν•˜ 직원이 올린 업무λ₯Ό μ²˜λ¦¬ν•œλ‹€. λΆ€μ„œμž₯이 μ²˜λ¦¬ν•œ 일은 μ™„λ£Œλœ 것이닀. μ—…λ¬΄λŠ” R일 λ™μ•ˆ μ§„ν–‰λ˜λ©° 업무λ₯Ό..

[μ†Œν”„ν‹°μ–΄] [인증평가(5μ°¨) 기좜] 업무 처리 (파이썬) (1)

λ‚œμ΄λ„ : β˜…β˜…β˜…β˜†β˜† https://softeer.ai/practice/info.do?idx=1&eid=1256&sw_prbl_sbms_sn=245958 Softeer μ—°μŠ΅λ¬Έμ œλ₯Ό 담을 Set을 μ„ νƒν•΄μ£Όμ„Έμš”. μ·¨μ†Œ 확인 softeer.ai πŸ“„ 문제 μ–΄λ–€ λΆ€μ„œμ˜ 업무 쑰직은 μ™„μ „μ΄μ§„νŠΈλ¦¬ λͺ¨μ–‘이닀. λͺ¨λ“  말단 직원은 λΆ€μ„œμž₯κΉŒμ§€ μ˜¬λΌκ°€λŠ” 거리가 λ™μΌν•˜λ‹€. (ν¬ν™”μ΄μ§„νŠΈλ¦¬) 말단 μ§μ›λ“€λ§Œ 각각 K개의 μˆœμ„œκ°€ 정해진 업무λ₯Ό 가지고 μžˆλ‹€. λŒ€κΈ°ν•˜λŠ” 업무가 μžˆλŠ” 경우, 직원듀은 업무가 올라온 μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜ μ²˜λ¦¬ν•΄μ„œ μƒμ‚¬μ—κ²Œ μ˜¬λ¦°λ‹€. 단, ν™€μˆ˜ 번째 λ‚ μ§œμ—λŠ” μ™Όμͺ½ λΆ€ν•˜ 직원이 올린 업무λ₯Ό, 짝수 번째 λ‚ μ§œμ—λŠ” 였λ₯Έμͺ½ λΆ€ν•˜ 직원이 올린 업무λ₯Ό μ²˜λ¦¬ν•œλ‹€. λΆ€μ„œμž₯이 μ²˜λ¦¬ν•œ 일은 μ™„λ£Œλœ 것이닀. μ—…λ¬΄λŠ” R일 λ™μ•ˆ μ§„ν–‰λ˜λ©° 업무λ₯Ό..

[λ°±μ€€] 1238 νŒŒν‹° (파이썬)

κ³¨λ“œ β…’ https://www.acmicpc.net/problem/1238 1238번: νŒŒν‹° 첫째 쀄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), Xκ°€ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μž…λ ₯λœλ‹€. 두 번째 쀄뢀터 M+1번째 μ€„κΉŒμ§€ i번째 λ„λ‘œμ˜ μ‹œμž‘μ , 끝점, 그리고 이 λ„λ‘œλ₯Ό μ§€λ‚˜λŠ”λ° ν•„μš”ν•œ μ†Œμš”μ‹œκ°„ Tiκ°€ λ“€μ–΄ www.acmicpc.net πŸ“„ 문제 N개의 숫자둜 κ΅¬λΆ„λœ 각각의 λ§ˆμ„μ— ν•œ λͺ…μ˜ 학생이 μ‚΄κ³  μžˆλ‹€. Nλͺ…μ˜ 학생이 X (1 ≤ X ≤ N) 번 λ§ˆμ„μ— λͺ¨μ—¬μ„œ νŒŒν‹°λ₯Ό 벌이기둜 ν–ˆλ‹€. 각각의 학생듀은 νŒŒν‹°μ— μ°Έμ„ν•˜κΈ° μœ„ν•΄ κ±Έμ–΄κ°€μ„œ λ‹€μ‹œ κ·Έλ“€μ˜ λ§ˆμ„λ‘œ λŒμ•„μ™€μ•Ό ν•œλ‹€. ν•˜μ§€λ§Œ 이 학생듀은 μ›Œλ‚™ κ²Œμ„λŸ¬μ„œ μ΅œλ‹¨ μ‹œκ°„μ— 였고 κ°€κΈ°λ₯Ό μ›ν•œλ‹€. 이 λ„λ‘œλ“€μ€ 단방ν–₯이기 λ•Œλ¬Έμ— μ•„λ§ˆ 그듀이 였고 κ°€λŠ” κΈΈ..

[μ†Œν”„ν‹°μ–΄] [인증평가(1μ°¨) 기좜] λ‘œλ΄‡μ΄ μ§€λ‚˜κ°„ 경둜 (파이썬)

λ‚œμ΄λ„ : β˜…β˜…β˜…β˜†β˜† https://softeer.ai/practice/info.do?idx=1&eid=577 Softeer μ—°μŠ΅λ¬Έμ œλ₯Ό 담을 Set을 μ„ νƒν•΄μ£Όμ„Έμš”. μ·¨μ†Œ 확인 softeer.ai πŸ“„ 문제 λ‘œλ΄‡μ€ 였λ₯Έμͺ½(동), μ™Όμͺ½(μ„œ), μ•„λž˜(남), μœ„(뢁) 쀑 ν•œ λ°©ν–₯을 바라본닀. L: λ‘œλ΄‡μ΄ μ™Όμͺ½μœΌλ‘œ 90도 νšŒμ „ν•˜λ©°, 이에 따라 λ°”λΌλ³΄λŠ” λ°©ν–₯이 바뀐닀. R: λ‘œλ΄‡μ΄ 였λ₯Έμͺ½μœΌλ‘œ 90도 νšŒμ „ν•˜λ©°, 이에 따라 λ°”λΌλ³΄λŠ” λ°©ν–₯이 바뀐닀. A: λ‘œλ΄‡μ΄ λ°”λΌλ³΄λŠ” λ°©ν–₯으둜 두 μΉΈ μ „μ§„ν•œλ‹€. β˜…λ‘œλ΄‡μ΄ 같은 칸을 두 번 이상 λ°©λ¬Έν•˜μ§€ μ•Šλ„λ‘ λͺ…λ Ήν•œλ‹€. λ°©λ¬Έν–ˆλ‹€λ©΄ '#'이고, λ°©λ¬Έν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ '.'둜 ν‘œμ‹œν•œλ‹€. λ‘œλ΄‡μ΄ 지도에 μ‚¬μˆ˜κ°€ ν‘œμ‹œν•œ λͺ¨λ“  μΉΈλ“€λ§Œμ„ λ°©λ¬Έν•˜μ—¬ μ•„λž˜ 정보λ₯Ό 계산해 μ£ΌλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λ €κ³  ν•œλ‹€. 처..

[λ°±μ€€] 14500 ν…ŒνŠΈλ‘œλ―Έλ…Έ (파이썬)

κ³¨λ“œ β…£ https://www.acmicpc.net/problem/14500 14500번: ν…ŒνŠΈλ‘œλ―Έλ…Έ ν΄λ¦¬μ˜€λ―Έλ…Έλž€ 크기가 1×1인 μ •μ‚¬κ°ν˜•μ„ μ—¬λŸ¬ 개 μ΄μ–΄μ„œ 뢙인 λ„ν˜•μ΄λ©°, λ‹€μŒκ³Ό 같은 쑰건을 λ§Œμ‘±ν•΄μ•Ό ν•œλ‹€. μ •μ‚¬κ°ν˜•μ€ μ„œλ‘œ 겹치면 μ•ˆ λœλ‹€. λ„ν˜•μ€ λͺ¨λ‘ μ—°κ²°λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€. μ •μ‚¬κ°ν˜•μ˜ λ³€ www.acmicpc.net πŸ“„ 문제 크기가 N×M인 쒅이 μœ„μ— ν…ŒνŠΈλ‘œλ―Έλ…Έ β˜…ν•˜λ‚˜λ₯Ό λ†“μœΌλ €κ³  ν•œλ‹€. μ’…μ΄λŠ” 1×1 크기의 칸으둜 λ‚˜λˆ„μ–΄μ Έ 있으며, 각각의 μΉΈμ—λŠ” μ •μˆ˜κ°€ ν•˜λ‚˜ μ“°μ—¬ μžˆλ‹€. μ •μ‚¬κ°ν˜• 4개λ₯Ό 이어 뢙인 ν΄λ¦¬μ˜€λ―Έλ…ΈλŠ” ν…ŒνŠΈλ‘œλ―Έλ…ΈλΌκ³  ν•˜λ©°, 5가지가 λͺ¨μ–‘이 μžˆλ‹€. ν…ŒνŠΈλ‘œλ―Έλ…ΈλŠ” λ°˜λ“œμ‹œ ν•œ μ •μ‚¬κ°ν˜•μ΄ μ •ν™•νžˆ ν•˜λ‚˜μ˜ 칸을 ν¬ν•¨ν•˜λ„λ‘ 놓아야 ν•˜λ©°, νšŒμ „μ΄λ‚˜ λŒ€μΉ­μ„ μ‹œμΌœλ„ λœλ‹€. ν…ŒνŠΈλ‘œλ―Έλ…Έ ν•˜λ‚˜λ₯Ό 적절히 λ†“μ•„μ„œ ν…ŒνŠΈλ‘œλ―Έ..

[μ†Œν”„ν‹°μ–΄] μ§€μš°λŠ” μ†Œμˆ˜λ₯Ό μ’‹μ•„ν•΄ (파이썬)

λ‚œμ΄λ„ : β˜…β˜…β˜…β˜…β˜† https://softeer.ai/practice/info.do?idx=1&eid=582 Softeer μ—°μŠ΅λ¬Έμ œλ₯Ό 담을 Set을 μ„ νƒν•΄μ£Όμ„Έμš”. μ·¨μ†Œ 확인 softeer.ai πŸ“„ 문제 μ—¬λŸ¬ μ²΄μœ‘κ΄€μ„ 거쳐 μ²΄μœ‘κ΄€ 배지λ₯Ό 얻은 ν›„ λ§ˆμ§€λ§‰ 포켓λͺ¬ λ¦¬κ·Έμ—μ„œ μ‚¬μ²œμ™•κ³Ό μ±”ν”Όμ–Έμ—κ²Œ 도전해야 ν•˜λŠ” μž„λ¬΄ 각각의 μ²΄μœ‘κ΄€μ—λŠ” μ²΄μœ‘κ΄€ κ΄€μž₯듀이 있고 κ·Έ κ΄€μž₯듀을 이겨야 μ²΄μœ‘κ΄€ 배지λ₯Ό 얻을 수 μžˆλ‹€. κ΄€μž₯듀을 이기기 μœ„ν•΄μ„  κ·Έ κ΄€μž₯듀이 κ°–κ³  μžˆλŠ” 레벨(level)보닀 λ†’μ•„μ•Ό ν•œλ‹€. μ²΄μœ‘κ΄€ κ΄€μž₯듀은 μ²΄μœ‘κ΄€ μ˜€λŠ” 길에 레벨 μ œν•œμ„ λ‘μ—ˆλ‹€. ‘X레벨 μ΄ν•˜ μ§€μ›μžλŠ” μ˜€μ§€ λ§ˆμ‹œμ˜€.’ μ§€μš°λŠ” μžμ‹ μ΄ 포켓λͺ¬ 리그에 λ‚˜κ°€κΈ° μœ„ν•œ μ΅œμ†Œν•œμ˜ 레벨이 μ•Œκ³  μ‹Άμ–΄μ‘Œλ‹€. μ§€μš°λŠ” μžμ‹ μ˜ λ ˆλ²¨λ„ μ†Œμˆ˜(Prime Number)에 λ§žμΆ°μ„œ 포..

728x90
λ°˜μ‘ν˜•