๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป 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.