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

Algorithm

(120)
[Programmers] K๋ฒˆ์งธ ์ˆ˜ ๋‚˜์˜ ์ฝ”๋“œ def solution(array, commands): arr = [] for i in range(len(commands)): num = array[commands[i][0]-1:commands[i][1]] num.sort(reverse=False) ans = num[commands[i][2]-1] arr.append(ans) return arr ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - K๋ฒˆ์งธ์ˆ˜ [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr
[Programmers] ์‹คํŒจ์œจ ๋‚˜์˜ ์ฝ”๋“œ def solution(N, stages): arr = [] hash = {} answer = [] stages.sort(reverse=False) for i in range(1,N+1): arr.append(i) for l in arr: if l in stages: hash[l] = stages.count(l)/len(stages[stages.index(l):]) else: hash[l] = 0 hash = sorted(hash.items(), key = lambda x: x[1], reverse=True) for i in range(len(hash)): answer.append(hash[i][0]) return answer ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‹คํŒจ์œจ ์‹คํŒจ์œจ ์Šˆํผ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž ์˜ค๋ ๋ฆฌ๋Š” ํฐ ๊ณ ..
[Programmers] ๋ชจ์˜๊ณ ์‚ฌ ๋ฌธ์ œ ์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž๋Š” 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐ์Šต๋‹ˆ๋‹ค. 1๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€์˜ ์ •๋‹ต์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์€ ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ..
[Programmers] JadenCase ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ ๋ฌธ์ œ JadenCase๋ž€ ๋ชจ๋“  ๋‹จ์–ด์˜ ์ฒซ ๋ฌธ์ž๊ฐ€ ๋Œ€๋ฌธ์ž์ด๊ณ , ๊ทธ ์™ธ์˜ ์•ŒํŒŒ๋ฒณ์€ ์†Œ๋ฌธ์ž์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ๋‹จ, ์ฒซ ๋ฌธ์ž๊ฐ€ ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹ ๋•Œ์—๋Š” ์ด์–ด์ง€๋Š” ์•ŒํŒŒ๋ฒณ์€ ์†Œ๋ฌธ์ž๋กœ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. (์ฒซ ๋ฒˆ์งธ ์ž…์ถœ๋ ฅ ์˜ˆ ์ฐธ๊ณ ) ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, s๋ฅผ JadenCase๋กœ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์ œํ•œ ์‚ฌํ•ญ s๋Š” ๊ธธ์ด 1 ์ด์ƒ 200 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. s๋Š” ์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž, ๊ณต๋ฐฑ๋ฌธ์ž(" ")๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๋Š” ๋‹จ์–ด์˜ ์ฒซ ๋ฌธ์ž๋กœ๋งŒ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ณต๋ฐฑ๋ฌธ์ž๊ฐ€ ์—ฐ์†ํ•ด์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์˜ ์ฝ”๋“œ def solution(s): s = list(s) for i in range(len(s)): if i == 0: if s[i].isalpha()..
[Programmers] ์ˆซ์ž์˜ ํ‘œํ˜„ ๋ฌธ์ œ Finn์€ ์š”์ฆ˜ ์ˆ˜ํ•™๊ณต๋ถ€์— ๋น ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ•™ ๊ณต๋ถ€๋ฅผ ํ•˜๋˜ Finn์€ ์ž์—ฐ์ˆ˜ n์„ ์—ฐ์†ํ•œ ์ž์—ฐ์ˆ˜๋“ค๋กœ ํ‘œํ˜„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 15๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€๋กœ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 ์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์—ฐ์†๋œ ์ž์—ฐ์ˆ˜๋“ค๋กœ n์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ returnํ•˜๋Š” solution๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์ œํ•œ์‚ฌํ•ญ n์€ 10,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๋‚˜์˜ ์ฝ”๋“œ def solution(n): stack = [] answer = [] for i in range(1,n+1): while sum(stack) != n: stack.append(i) i += 1 if..
[Programmers] ์ตœ์†Ÿ๊ฐ’ ๋งŒ๋“ค๊ธฐ ๋ฌธ์ œ ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๋ฐฐ์—ด A, B ๋‘๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฐฐ์—ด์€ ์ž์—ฐ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด A, B์—์„œ ๊ฐ๊ฐ ํ•œ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฝ‘์•„ ๋‘ ์ˆ˜๋ฅผ ๊ณฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฉฐ, ๋‘ ์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ๋ˆ„์ ํ•˜์—ฌ ๋”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ตœ์ข…์ ์œผ๋กœ ๋ˆ„์ ๋œ ๊ฐ’์ด ์ตœ์†Œ๊ฐ€ ๋˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. (๋‹จ, ๊ฐ ๋ฐฐ์—ด์—์„œ k๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ๋ฝ‘์•˜๋‹ค๋ฉด ๋‹ค์Œ์— k๋ฒˆ์งธ ์ˆซ์ž๋Š” ๋‹ค์‹œ ๋ฝ‘์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.) ์˜ˆ๋ฅผ ๋“ค์–ด A = [1, 4, 2] , B = [5, 4, 4] ๋ผ๋ฉด A์—์„œ ์ฒซ๋ฒˆ์งธ ์ˆซ์ž์ธ 1, B์—์„œ ์ฒซ๋ฒˆ์งธ ์ˆซ์ž์ธ 5๋ฅผ ๋ฝ‘์•„ ๊ณฑํ•˜์—ฌ ๋”ํ•ฉ๋‹ˆ๋‹ค. (๋ˆ„์ ๋œ ๊ฐ’ : 0 + 5(1x5) = 5) A์—์„œ ๋‘๋ฒˆ์งธ ์ˆซ์ž์ธ 4, B์—์„œ ์„ธ๋ฒˆ์งธ ์ˆซ์ž์ธ 4๋ฅผ ๋ฝ‘์•„ ๊ณฑํ•˜์—ฌ ๋”ํ•ฉ๋‹ˆ๋‹ค. (๋ˆ„์ ๋œ ๊ฐ’ : 5 + 16(4x4) = 21) A..
[Programmers] ์˜ˆ์‚ฐ ์ฝ”๋“œ def solution(d, budget): d.sort() print(d) while sum(d) > budget: d.pop() return len(d) ๋ถ„์„ > ์ฒ˜์Œ์— ๊ผฌ์•„ ์ƒ๊ฐํ•ด์„œ ์กฐ๊ธˆ ์• ๋จน์—ˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค. ์šฐ์„  d๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ ํ›„ d์˜ ํ•ฉ์ด ์˜ˆ์‚ฐ๋ณด๋‹ค ํด ๋•Œ๊นŒ์ง€ ๋’ค์—์„œ๋ถ€ํ„ฐ popํ•œ ํ›„ ๋‚˜์˜จ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ return ํ•˜๋ฉด ๋œ๋‹ค. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜ˆ์‚ฐ S์‚ฌ์—์„œ๋Š” ๊ฐ ๋ถ€์„œ์— ํ•„์š”ํ•œ ๋ฌผํ’ˆ์„ ์ง€์›ํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด ๋ถ€์„œ๋ณ„๋กœ ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธˆ์•ก์„ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ „์ฒด ์˜ˆ์‚ฐ์ด ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ถ€์„œ์˜ ๋ฌผํ’ˆ์„ ๊ตฌ๋งคํ•ด ์ค„ ์ˆ˜๋Š” programmers.co.kr
[Programmers] ๋ฐฉ๋ฌธ ๊ธธ์ด ํ•ด์„ค ์ฝ”๋“œ def solution(dirs): visit = set() x = 0; y = 0 for d in dirs: if d == 'U' and y -5: visit.add(((x, y-1), (x, y))) y -= 1 elif d == 'R' and x -5: visit.add(((x-1, y), (x, y))) x -= 1 return len(visit) ๋ถ„์„ > set ์„ ํ™œ์šฉํ•ด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. set์„ ํ™œ์šฉํ•˜๋ฉด ๊ฐ™์€ ๊ธธ์„ ๊ฑธ์—ˆ๋Š”์ง€, ์•„๋‹Œ์ง€๋ฅผ ๋ถ„๋ณ„ํ•  ์ˆ˜..