๐ป CS18 ๋ฐฑ์ค 21279๋ฒ ๊ด๋ถ ํธ์ - Python ๋ฌธ์ https://www.acmicpc.net/problem/21279 ์๋ํ์ง๋ง ์คํจํ ๋ฐฉ๋ฒBFS(?) ๋ฐฉ๋ฒ์ผ๋ก mines[x][y] = mines[x-1][y] + mines[x][y-1] - mines[x-1][y-1] + mineral[x][y] -> O(W*H)๋ก ์คํจ๋ชจ๋ ํฌ์ธํธ๋ฅผ ๋ฐ๋ณตํด์ ๋ฃ์ด์ ์ฒ๋ฆฌ -> O(N^2)๋ก ์คํจ ๋ง์ง๋ง์ ํฌํฌ์ธํฐ + set์ ํ์ฉํ๋ค. import sysfrom collections import defaultdictinput = sys.stdin.readlinen, cash = map(int, input().split())x_gems = defaultdict(list) # x์ขํ์ ์๋ ๋ณด์๋คy_gems = defaultdict(list) # y์ขํ์ ์๋ ๋ณด์.. 2025. 3. 29. HTTP ์ ๋ฆฌ ๋ฐ ์ง๋ฌธ ๋ฆฌ์คํธ (feat.RESTful) 1. HTTP ์ ๋ฆฌ๐ ์ฃผ์ ์ํ ์ฝ๋ ์์ฝ ์ ๋ฆฌํ ์ํ ์ฝ๋ ์๋ฏธ์ฌ์ฉ์์200 OK์ฑ๊ณต์ผ๋ฐ์ ์ธ ์์ฒญ ์ฑ๊ณต201 Created๋ฆฌ์์ค ์์ฑ๋จPOST๋ก ์๋ก์ด ๋ฆฌ์์ค ์์ฑ204 No Content์ฑ๊ณตํ์ง๋ง ์๋ต ๋ณธ๋ฌธ ์์DELETE, PATCH ๋ฑ ํ์ ๋ณธ๋ฌธ ๋ถํ์ํ ๋400 Bad Requestํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ์๋ชป๋ ํ๋ผ๋ฏธํฐ, JSON ํ์ฑ ์คํจ401 Unauthorized์ธ์ฆ ์คํจ๋ก๊ทธ์ธ/ํ ํฐ ์์, ๋ง๋ฃ403 Forbidden๊ถํ ์์๋ก๊ทธ์ธ์ ๋์ง๋ง ๊ถํ ์์404 Not Found๋ฆฌ์์ค ์์๊ฒฝ๋ก ๋๋ ๋ฆฌ์์ค ์กด์ฌํ์ง ์์405 Method Not Allowed๋ฉ์๋ ํ์ฉ ์๋จGET๋ง ์ง์ํ๋ API์ POST ์์ฒญ ๋ฑ409 Conflict๋ฆฌ์์ค ์ถฉ๋์ค๋ณต ์์ฒญ, ๋ฒ์ ์ถฉ๋ ๋ฑ429 Too Many R.. 2025. 3. 22. ๋ก๋ ๋ฐธ๋ฐ์ (Load Balancer) 1. ๋ก๋ ๋ฐธ๋ฐ์๋?๋ก๋ ๋ฐธ๋ฐ์(Load Balancer)๋ ์ฌ๋ฌ ์๋ฒ๋ก ๋ค์ด์ค๋ ๋คํธ์ํฌ ํธ๋ํฝ์ ํจ์จ์ ์ผ๋ก ๋ถ์ฐํ๋ ์ฅ์น ๋๋ ์ํํธ์จ์ด๋ฅผ ์๋ฏธํ๋ค. ์ด๋ ํน์ ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ์ฑ๋ฅ์ ์ต์ ํํ๋ฉฐ, ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๋ ์ญํ ์ ํ๋ค. 2. ๋ก๋ ๋ฐธ๋ฐ์์ ํ์์ฑ๋ถํ ๋ถ์ฐ: ๋ค์์ ์๋ฒ์ ํธ๋ํฝ์ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐํ์ฌ ํน์ ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์ง๊ณ ๊ฐ์ฉ์ฑ(High Availability): ์ผ๋ถ ์๋ฒ๊ฐ ์ฅ์ ๊ฐ ๋๋๋ผ๋ ์๋น์ค๊ฐ ์ง์ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํ์ฅ์ฑ(Scalability): ์๋ฒ๋ฅผ ์ถ๊ฐํ์ฌ ๋ ๋ง์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ง์๋ณด์ ๊ฐํ: ํน์ ์๋ฒ์ ์ง์ ์ ์ธ ์ ๊ทผ์ ์ฐจ๋จํ์ฌ ๋ณด์์ ๊ฐํํ ์ ์์ 3. ๋ก๋ ๋ฐธ๋ฐ์์ ์๋ ๋ฐฉ์๋ก๋ ๋ฐธ๋ฐ์๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฌ๋ฌ ์๋ฒ๋ก ๋๋์ด ์ ๋ฌํ๋ฉฐ.. 2025. 3. 10. 200๋ ๊ฐ ํ๊ด์๋ จํ๋๋ PS ์ต๊ฐ์๊ฐ ๋ ๊ฑด์ ๋ํ์ฌ from collections import namedtuplefrom sys import stdinContest = namedtuple("Contest", ["limit", "prize"])N = int(stdin.readline())contests = [ Contest(*map(int, stdin.readline().split())) for _ in range(N)]result = "Kkeo-eok"total_prize = 0max_prize = 0skip_prize = 0skip = Falsefor limit, prize in contests: if total_prize - skip_prize > limit: # ๋์ด๊ฐ ์๊ธ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ if skip: # ๋ถ์ฐธํ ์ ์ด .. 2025. 2. 18. [SQL] ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก์์ ๋์ฌ์ค / ๋์ฌ ๊ฐ๋ฅ ์ฌ๋ถ ๊ตฌ๋ถํ๊ธฐ (ํ๋ก๊ทธ๋๋จธ์ค/Level 3) ๋ฌธ์ ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.krCAR_RENTAL_COMPANY_RENTAL_HISTORY ํ ์ด๋ธ์์ 2022๋ 10์ 16์ผ์ ๋์ฌ ์ค์ธ ์๋์ฐจ์ธ ๊ฒฝ์ฐ '๋์ฌ์ค' ์ด๋ผ๊ณ ํ์ํ๊ณ , ๋์ฌ ์ค์ด์ง ์์ ์๋์ฐจ์ธ ๊ฒฝ์ฐ '๋์ฌ ๊ฐ๋ฅ'์ ํ์ํ๋ ์ปฌ๋ผ(์ปฌ๋ผ๋ช : AVAILABILITY)์ ์ถ๊ฐํ์ฌ ์๋์ฐจ ID์ AVAILABILITY ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.์ด๋ ๋ฐ๋ฉ ๋ ์ง๊ฐ 2022๋ 10์ 16์ผ์ธ ๊ฒฝ์ฐ์๋ '๋์ฌ์ค'์ผ๋ก ํ์ํด์ฃผ์๊ณ ๊ฒฐ๊ณผ๋ ์๋์ฐจ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์. ํ์ดSELECT CAR_ID, CASE WHEN CAR_ID .. 2025. 2. 11. 0-1 Knapsack Problem ์ต์ ํ (DP ๋ฉ๋ชจ๋ฆฌ) N, K = map(int, input().split())items = [ list(map(int, input().split())) for i in range(N)]# DP ๋ฉ๋ชจ์ด์ ์ด์ dp = [ [0] * (K+1) for _ in range(N+1)]for i in range(1,N+1): for w in range(1,K+1): weight = items[i-1][0] value = items[i-1][1] if weight > w: dp[i][w] = dp[i-1][w] else: # ๊ธฐ์กด์ ๋ง๋ค์ด ๋ w-weight ์ต๋๊ฐ ๊ฐ์ ธ ์ค๊ณ , ๋น๊ต dp[i][w] = max(dp[i-1][w], dp[i-1][w-weight] + value)print(dp[N][K])(N+1) * (.. 2025. 1. 4. ์ด์ 1 2 3 ๋ค์