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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

(86)
[Level 2] ๋ฌธ์ž์—ด ์••์ถ• ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฌธ์ž์—ด ์••์ถ• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ์–ดํ”ผ์น˜๋Š” ๋ฌธ์ž์—ด์„ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ๋น„์†์‹ค ์••์ถ• ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ฌธ์ž programmers.co.kr def solution(s): len_s = len(s) cand = [] if len_s < 3: return len_s for u in range(1, int(len_s/2)+1): splt_s = [s[u*i:u*(i+1)] for i in range(int(len_s/u)+1)] comp_s = [] prev = splt_s.pop(0) cnt = 1 while splt_s: cur = splt_s.pop(0) if cur == prev: cnt +..
[Level 2] ๊ตฌ๋ช…๋ณดํŠธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ตฌ๋ช…๋ณดํŠธ ๋ฌด์ธ๋„์— ๊ฐ‡ํžŒ ์‚ฌ๋žŒ๋“ค์„ ๊ตฌ๋ช…๋ณดํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์ถœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ช…๋ณดํŠธ๋Š” ์ž‘์•„์„œ ํ•œ ๋ฒˆ์— ์ตœ๋Œ€ 2๋ช…์”ฉ ๋ฐ–์— ํƒˆ ์ˆ˜ ์—†๊ณ , ๋ฌด๊ฒŒ ์ œํ•œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ [70kg, 50kg, 80kg, 5 programmers.co.kr def solution(ppl, lim): ppl.sort() cnt = 0 while ppl: if len(ppl) == 1: cnt += 1 break cur_cnt = cnt for i in reversed(range(1, len(ppl))): if ppl[0]+ppl[i]
[Level 2] ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก (Python) ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ ์ค‘, ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒฝ์šฐ, ๊ตฌ์กฐ๋Œ€ ์ „ํ™”๋ฒˆํ˜ธ๋Š” ์˜์„์ด์˜ ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ ‘๋‘์‚ฌ์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐ๏ฟฝ๏ฟฝ programmers.co.kr def solution(p_b): for i in range(len(p_b)): for j in range(i+1, len(p_b)): if p_b[i] == p_b[j][:len(p_b[i])] or p_b[j] == p_b[i][:len(p_b[j])]: return False return True โ–ท ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์— ์žˆ๋Š” ์ „ํ™”๋ฒˆํ˜ธ ๋‘ ๊ฐœ๋ฅผ ์„ ํƒํ•˜์—ฌ ๋น„๊ตํ•˜๋„๋ก for ๋ฌธ์„ ์ด์šฉํ•œ ์ด์ค‘๋ฃจํ”„๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. โ–ท ์ฃผ์˜ํ•  ์ ์€ ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด๋ฅผ ๋น„๊ตํ•  ๋•Œ, ..
[Level 2] H-Index (Python) ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - H-Index H-Index๋Š” ๊ณผํ•™์ž์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์˜ํ–ฅ๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ๊ณผํ•™์ž์˜ H-Index๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ธ h๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ‚ค๋ฐฑ๊ณผ1์— ๋”ฐ๋ฅด๋ฉด, H-Index๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œ programmers.co.kr def solution(c): candi_h = [] if not max(c): return 0 for h in range(1, max(c)+1): l_h = 0 u_h = 0 for i in range(len(c)): if c[i] >= h: u_h += 1 if c[i] = h) and (l_h
์ˆœํ™˜ ์‹ ๊ฒฝ๋ง(Recurrent Neural Network) ๊ตฌํ˜„ ํŒŒ์ดํ† ์น˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง(Recurrent Neural Network)๋ฅผ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๋‹ค. ๊ตฌํ˜„ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ 2. ๋ชจ๋ธ ์„ค์ • 3. ๋ชจ๋ธ ํ•™์Šต 4. ํ•™์Šต ๊ฒฐ๊ณผ 1. ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ In: import torch import torch.nn as nn import torch.optim as optim import numpy as np string = "To climb steep hills requires a slow pace at first." chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ?!.,:;'01" char_list = [i for i in chars] n_letter = len(chars) def s..
[Level 2] ์œ„์žฅ (Python) ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์œ„์žฅ programmers.co.kr def solution(clothes): clothes_num = {} for i in clothes: if i[1] in clothes_num: clothes_num[i[1]] += 1 else: clothes_num[i[1]] = 1 cnt = 1 for i in clothes_num.values(): cnt *= i+1 cnt -= 1 return cnt โ–ท ์ด ๋ฌธ์ œ๋Š” ํ‚ค์™€ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ์˜๋ฅ˜์˜ ์ข…๋ฅ˜๋ฅผ ํ‚ค๋กœ, ํ•ด๋‹น ์ข…๋ฅ˜์— ํฌํ•จ๋œ ์˜๋ฅ˜๋ฅผ ๊ฐ’์œผ๋กœ ๋‘”๋‹ค. ์ฒซ ๋ฒˆ์งธ for ๋ฌธ์€ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ์ด๋‹ค. โ–ท ์ „์ฒด ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๊ฐ ํ•ด๋‹น ์˜๋ฅ˜์˜ ์ˆ˜์— 1์„ ๋”ํ•œ ํ›„, ๋ชจ๋‘ ๊ณฑํ•œ ๋’ค, 1์„ ๋นผ์ค€ ๊ฒƒ์„ ํ†ตํ•ด ๊ตฌํ•  ์ˆ˜ ์žˆ..
[Level 2] ๊ด„ํ˜ธ ๋ณ€ํ™˜ (Python) ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ด„ํ˜ธ ๋ณ€ํ™˜ ์นด์นด์˜ค์— ์‹ ์ž… ๊ฐœ๋ฐœ์ž๋กœ ์ž…์‚ฌํ•œ ์ฝ˜์€ ์„ ๋ฐฐ ๊ฐœ๋ฐœ์ž๋กœ๋ถ€ํ„ฐ ๊ฐœ๋ฐœ์—ญ๋Ÿ‰ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ฌธ์ œ์ ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋ผ๋Š” ์—…๋ฌด ๊ณผ์ œ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์†Œ์Šค๋ฅผ ์ปด๏ฟฝ programmers.co.kr def is_correct(b): stack = [] for i in b: if i == '(': stack.append(i) elif stack: stack.pop() return not stack def detach(b): lst_b = list(b) cnt_l = 0 cnt_r = 0 for i in b: if i == '(': cnt_l += 1 else: cnt_r += 1 if cnt_l == cnt_r: break u = b[:cnt_l+cnt_r]..
[Level 2] ์‚ผ๊ฐ ๋‹ฌํŒฝ์ด (Python) ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‚ผ๊ฐ ๋‹ฌํŒฝ์ด 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr def solution(n): answer = [] mtx = [[0]*(i+1) for i in range(n)] i = -1 j = 0 num = 0 while True: for _ in range(n): num += 1 i += 1 mtx[i][j] = num n -= 1 if n == 0: break for _ in range(n): num += 1 j += 1 mtx[i][j] = num n -= 1 if n == 0: break for _ in range(n..
[Level 2] ์นดํŽซ (Python) ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์นดํŽซ Leo๋Š” ์นดํŽซ์„ ์‚ฌ๋Ÿฌ ๊ฐ”๋‹ค๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ค‘์•™์—๋Š” ๋…ธ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ณ  ํ…Œ๋‘๋ฆฌ 1์ค„์€ ๊ฐˆ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋Š” ๊ฒฉ์ž ๋ชจ์–‘ ์นดํŽซ์„ ๋ดค์Šต๋‹ˆ๋‹ค. Leo๋Š” ์ง‘์œผ๋กœ ๋Œ์•„์™€์„œ ์•„๊นŒ ๋ณธ ์นดํŽซ์˜ ๋…ธ๋ž€์ƒ‰๊ณผ ๏ฟฝ๏ฟฝ programmers.co.kr import math def solution(brown, yellow): total = brown + yellow m, n = [], [] for i in range(1, math.floor(math.sqrt(total)) + 1): if divmod(total, i)[1] == 0: n.append(i) m.append(int(total/i)) for i in range(len(n)): if 2*(m[i] + n[i]) - 4 == brown: ret..
[Level 2] ๋‹ค์Œ ํฐ ์ˆซ์ž (Python) ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋‹ค์Œ ํฐ ์ˆซ์ž ์ž์—ฐ์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด 1. n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž๋Š” n๋ณด๋‹ค ํฐ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ์กฐ๊ฑด 2. n์˜ ๋‹ค์Œ ํฐ ์ˆซ์ž์™€ n์€ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ 1์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๊ฐ™์Šต๋‹ˆ programmers.co.kr def solution(n): n_bin = bin(n)[2:] if len(set(n_bin)) == 1: return(int('10' + n_bin[1:], 2)) one_cnt = n_bin.count('1') while(True): n += 1 if bin(n)[2:].count('1') == one_cnt: return(n) โ–ท n์˜ ์ด์ง„์ˆ˜๊ฐ€ ๋ชจ๋‘ 1์ธ ๊ฒฝ์šฐ์™€ ์•„๋‹Œ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ„์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. โ–ท n์˜ ์ด์ง„์ˆ˜๊ฐ€ ๋ชจ๋‘ 1์ธ..
๋ฒ ์ด์ง€์•ˆ ์ ‘๊ทผ(Bayesian approach)์ด ํ•„์š”ํ•œ ์ด์œ  โ–ก Example: Polynomial Curve Fitting ์‚ฌ์ธ ํ•จ์ˆ˜์— ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ์— 1๋ถ€ํ„ฐ 20์ฐจ ๋‹คํ•ญ ํ•จ์ˆ˜ ๋ชจํ˜•์„ ์ ํ•ฉ ํ›„, ๊ฒฐ๊ณผ์— ๋Œ€ํ•˜์—ฌ ๋ถ„์„ํ•˜์—ฌ๋ผ. ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ์˜ ์ƒ์„ฑ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋‹คํ•ญ ํ•จ์ˆ˜ ๋ชจํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. โ–ท ๋‹คํ•ญ ํ•จ์ˆ˜ ๋ชจํ˜•์˜ ๋ชจ์ˆ˜์˜ ๊ฐœ์ˆ˜๋Š” ์ฐจ์ˆ˜์˜ ๊ฐœ์ˆ˜์— 1์„ ๋”ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. โ–ท ์ฐจ์ˆ˜๊ฐ€ ๋†’์•„์งˆ์ˆ˜๋ก ๋†’์€ ์ž์œ ๋„๋ฅผ ๊ฐ€์ง„ ๋น„์„ ํ˜• ์ ํ•ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฐจ์ˆ˜๊ฐ€ ๋†’์•„์งˆ์ˆ˜๋ก ์ž์œ ๋„๊ฐ€ ๋†’์•„์ ธ ์˜ค๋ฒ„ํ”ผํŒ… ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์— ์ ํ•ฉ ์‹œ, ์ ์ ˆํ•œ ์ˆ˜์˜ ์ฐจ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๋‹ค์Œ์€ 1์ฐจ๋ถ€ํ„ฐ 20์ฐจ ๋‹คํ•ญ ํ•จ์ˆ˜ ๋ชจํ˜•์— ์ ํ•ฉํ•œ ๊ฒฐ๊ณผ์ด๋‹ค. โ–ท ํŒŒ๋ž€ ์ ์€ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๊ณ , ์ดˆ๋ก ์„ ์€ ์‹ค์ œ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋œ ์‚ฌ์ธ ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. โ–ท ๋‹ค..
๋ฒ ์ด์ง€์•ˆ ๋„คํŠธ์›Œํฌ(Bayesian network) (3) ๋ณธ ํฌ์ŠคํŒ…์€ ์นด์ด์ŠคํŠธ ๋ฌธ์ผ์ฒ  ๊ต์ˆ˜๋‹˜์˜ ์ธ๊ณต์ง€๋Šฅ ๋ฐ ๊ธฐ๊ณ„ํ•™์Šต ๊ฐœ๋ก  2์˜ ๋ฒ ์ด์ง€์•ˆ ๋„คํŠธ์›Œํฌ(Bayesian network) ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค. ๋‹ค๋ฃฐ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. Potential functions 2. Absorption in clique graph 3. Example of belief propagation 1. Potential functions โ–ท Potential function์€ ์ž ์žฌ์ ์œผ๋กœ ํ™•๋ฅ ์ด ๋˜๋Š” ํ•จ์ˆ˜๋กœ์จ, ์•„์ง ํ™•๋ฅ ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” Belief propagation์„ ํ†ตํ•ด ํ™•๋ฅ ๋กœ์จ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ดํ›„์— ๋‹ค๋ฃจ๊ธฐ๋กœ ํ•˜๊ฒ ๋‹ค. โ–ท ์œ„์˜ ์˜ˆ๋Š” Potential function์„ ์„ค๋ช…ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋‚˜ํƒ€๋‚ธ ๋ฒ ์ด์ง€์•ˆ ๋„คํŠธ์›Œํฌ..