728x90
λ°˜μ‘ν˜•

전체 κΈ€ 104

[μ•Œκ³ λ¦¬μ¦˜] μ‹œκ°„ λ³΅μž‘λ„ (Time Complexity)

μ‹œκ°„ λ³΅μž‘λ„ (Time Complexity) 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ μ•Œκ³ λ¦¬μ¦˜μ˜ λ‘œμ§μ„ μ½”λ“œλ‘œ κ΅¬ν˜„ν•  λ•Œ, μž…λ ₯κ°’μ˜ 변화에 따라 연산을 μ‹€ν–‰ν•  λ•Œ, μ—°μ‚° νšŸμˆ˜μ— λΉ„ν•΄ μ‹œκ°„μ΄ μ–Όλ§ŒνΌ κ±Έλ¦¬λŠ”κ°€? 즉, νŠΉμ • μ•Œκ³ λ¦¬μ¦˜μ΄ μ–΄λ–€ 문제λ₯Ό ν•΄κ²°ν•˜λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ„ μ˜λ―Έν•œλ‹€. 효율적인 μ•Œκ³ λ¦¬μ¦˜μ΄λž€, μž…λ ₯값이 컀짐에 따라 μ¦κ°€ν•˜λŠ” μ‹œκ°„μ˜ λΉ„μœ¨μ„ μ΅œμ†Œν™”ν•œ μ•Œκ³ λ¦¬μ¦˜ 을 κ΅¬μ„±ν–ˆλ‹€λŠ” 것이닀. μ‹œκ°„ λ³΅μž‘λ„λŠ” 주둜 λΉ…-였 ν‘œκΈ°λ²•(Big-O)을 μ‚¬μš©ν•΄ λ‚˜νƒ€λ‚Έλ‹€. 일반적으둜 μˆ˜ν–‰ μ‹œκ°„μ€ 1μ–΅ 번의 연산을 1초의 μ‹œκ°„μœΌλ‘œ κ°„μ£Όν•˜μ—¬ μ˜ˆμΈ‘ν•œλ‹€. μ‹œκ°„ λ³΅μž‘λ„ μœ ν˜• μ‹œκ°„ λ³΅μž‘λ„λŠ” 3가지 경우둜 λ‚˜νƒ€λ‚Έλ‹€. μ΅œμ„ μ˜ 경우 (Best Case) Big-Ω (λΉ…-μ˜€λ©”κ°€) λΉ… μ˜€λ©”κ°€ ν‘œκΈ°λ²• μ‚¬μš© μ΅œμ„ μ˜ μ‹œλ‚˜λ¦¬μ˜€λ‘œ μ΅œμ†Œ μ΄λ§Œν•œ μ‹œκ°„μ΄ κ±Έλ¦Ό μ΅œμ•…μ˜ 경우 (Wor..

Algorithm 2023.08.14

[λ°±μ€€] 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) 번 λ§ˆμ„μ— λͺ¨μ—¬μ„œ νŒŒν‹°λ₯Ό 벌이기둜 ν–ˆλ‹€. 각각의 학생듀은 νŒŒν‹°μ— μ°Έμ„ν•˜κΈ° μœ„ν•΄ κ±Έμ–΄κ°€μ„œ λ‹€μ‹œ κ·Έλ“€μ˜ λ§ˆμ„λ‘œ λŒμ•„μ™€μ•Ό ν•œλ‹€. ν•˜μ§€λ§Œ 이 학생듀은 μ›Œλ‚™ κ²Œμ„λŸ¬μ„œ μ΅œλ‹¨ μ‹œκ°„μ— 였고 κ°€κΈ°λ₯Ό μ›ν•œλ‹€. 이 λ„λ‘œλ“€μ€ 단방ν–₯이기 λ•Œλ¬Έμ— μ•„λ§ˆ 그듀이 였고 κ°€λŠ” κΈΈ..

[SQL] SQL의 κ°œλ…κ³Ό μ’…λ₯˜

SQL의 κ°œλ… Structured Query Language의 μ•½μžλ‘œμ„œ, κ΅¬μ‘°ν™”λœ 질의 언어이닀. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(RDBMS)의 데이터λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ„€κ³„λœ νŠΉμˆ˜ν•œ λͺ©μ μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(RDBMS)을 μ‚¬μš©ν•  λ•Œ ν•΄λ‹Ή μ‹œμŠ€ν…œμ˜ 데이터λ₯Ό μ •μ˜ν•˜κ³ , μ‘°μž‘ν•˜κ³ , μ œμ–΄ν•  λͺ©μ μœΌλ‘œ λ§Œλ“€μ–΄μ§„ ν”„λ‘œκ·Έλž˜λ° 언어이닀. SQL 문법은 λŠ” 크게 DDL, DML, DCL μ„Έ 가지 μ’…λ₯˜λ‘œ ꡬ뢄될 수 μžˆλ‹€. 데이터 μ •μ˜μ–΄ (DDL, Data Definition Language) λŒ€μƒ : λ°μ΄ν„°λ² μ΄μŠ€ 객체 (ν…Œμ΄λΈ”, λ·°, μ‹œν€€μŠ€ μ œμ•½μ‘°κ±΄ λ“±) 데이터 μ •μ˜ μ–Έμ–΄λ‘œ ν’€μ–΄ 말할 수 있으며 μŠ€ν‚€λ§ˆλ₯Ό μ •μ˜ν•˜κ±°λ‚˜ μ‘°μž‘ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€. 데이터 μ‘°μž‘μ–΄ (DML, Data Manipulatio..

Programming/SQL 2023.08.05

[자료ꡬ쑰] μŠ€νƒ(Stack)κ³Ό 큐(Queue)

μŠ€νƒ (Stack) μ΄λž€? μŠ€νƒ(Stack)은 μŒ“μ•„ μ˜¬λ¦°λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ, μŠ€νƒ(Stack)은 책을 μŒ“λŠ” κ²ƒμ²˜λŸΌ 차곑차곑 μŒ“μ•„ 올린 ν˜•νƒœμ˜ 자료ꡬ쑰λ₯Ό μ˜λ―Έν•œλ‹€. 즉, ν›„μž…μ„ μΆœ(LIFO, Last In First Out) λ°©μ‹μ˜ μžλ£Œκ΅¬μ‘°μ΄λ‹€. μŠ€νƒμ˜ νŠΉμ§• μŠ€νƒμ€ μ‹œκ°„ μˆœμ„œμ— 따라 데이터가 μŒ“μ΄κ²Œ λ˜λ―€λ‘œ, κ°€μž₯ λ§ˆμ§€λ§‰μ— μ‚½μž…λœ 데이터가 κ°€μž₯ λ¨Όμ € μ‚­μ œλœλ‹€. μœ„μ˜ κ·Έλ¦Όκ³Ό 같이 μ•„λž˜μ—μ„œ μœ„λ‘œ μŒ“μ΄λŠ” ν˜•μ‹μ΄λ‹€. κ°€μž₯ 졜근(λ§ˆμ§€λ§‰)에 λ“€μ–΄μ˜¨ 자료λ₯Ό top이라고 λΆ€λ₯Έλ‹€. μŠ€νƒ λ‚΄λΆ€μ˜ λ°μ΄ν„°λŠ”, top 을 ν†΅ν•΄μ„œλ§Œ μ ‘κ·Όν•  수 μžˆλ‹€. μ‚½μž…κ³Ό μ‚­μ œλŠ” ν•œ κ³³(top)μ—μ„œλ§Œ μ΄λ£¨μ–΄μ§€κ²Œ λœλ‹€. κ°€μž₯ μœ„μͺ½(μ΅œμ‹ )의 데이터뢀터 κΊΌλ‚Ό 수 μžˆλ‹€. ν›„μž…μ„ μΆœ(LIFO, Last In First Out)의 ꡬ쑰 데이터λ₯Ό μ‚½μž…ν•  ..

CS/Data Structure 2023.08.04

[μ†Œν”„ν‹°μ–΄] [인증평가(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가지가 λͺ¨μ–‘이 μžˆλ‹€. ν…ŒνŠΈλ‘œλ―Έλ…ΈλŠ” λ°˜λ“œμ‹œ ν•œ μ •μ‚¬κ°ν˜•μ΄ μ •ν™•νžˆ ν•˜λ‚˜μ˜ 칸을 ν¬ν•¨ν•˜λ„λ‘ 놓아야 ν•˜λ©°, νšŒμ „μ΄λ‚˜ λŒ€μΉ­μ„ μ‹œμΌœλ„ λœλ‹€. ν…ŒνŠΈλ‘œλ―Έλ…Έ ν•˜λ‚˜λ₯Ό 적절히 λ†“μ•„μ„œ ν…ŒνŠΈλ‘œλ―Έ..

728x90
λ°˜μ‘ν˜•