CK week1 day5

BnDCΒ·2021λ…„ 9μ›” 17일
0

code Kata

λͺ©λ‘ 보기
5/22

🧨 문제

받은 λ°°μ—΄μ˜ μ›μ†Œλ“€μ˜ κ³΅ν†΅λœ 접두사 문자λ₯Ό λ°˜ν™˜ν•˜λΌ

ex)
strs = ['start', 'stair', 'step']
st λ°˜ν™˜

ex)
strs = ['start', 'wework', 'today']
'' λ°˜ν™˜






πŸŽ―λ‚΄ 풀이


def get_prefix(strs):

#step 1
  if len(strs) == 0:
    return ''

  n = (len(strs[0]) if len(strs[0]) < len(strs[1]) 
      		    else len(strs[1]))
  pre=''

#step 2
  for i in range(n):
    if (strs[0][i] == strs[1][i]):
      pre += strs[0][i]
  
#step 3
  for str in strs[2:]:
  	n = (len(s) if len(s) < len(pre)
    		    else len(pre))
  
    while pre:
      if (pre == str[:len(pre)]):
        break
      else:
        pre=pre[:-1]
        
    if(pre == ''):
      break
  
  return pre
    




πŸ“ step 1

def get_prefix(strs):

#step 1
  if len(strs) == 0:
    return ''

  n = (len(strs[0]) if len(strs[0]) < len(strs[1]) else len(strs[1]))
  pre=''

받은 λ°°μ—΄μ˜ μš”μ†Œκ°€ μ—†μ„λ•Œ, 빈 λ¬Έμžμ—΄ λ°˜ν™˜

받은 λ°°μ—΄μ˜ 첫번째, λ‘λ²ˆμ§Έ μš”μ†Œμ˜ 길이λ₯Ό λΉ„κ΅ν•˜μ—¬, μž‘μ€ 길이 값을 n에 λ‹΄λŠ”λ‹€



πŸ“ step 2

#step 2
  for i in range(n):
    if (strs[0][i] == strs[1][i]):
      pre += strs[0][i]

for 문을 톡해 λ¬Έμžμ—΄μ˜ ν•œ κΈ€μžμ”© 돌며,
첫 λ²ˆμ§Έμ™€ 두 번째 문자λ₯Ό 비ꡐ해 κ³΅ν†΅λ˜λŠ” 문자λ₯Ό pre에 λ‹΄λŠ”λ‹€



πŸ“ step 3

#step 3
  for str in strs[2:]:
    while pre:
      if (pre == str[:len(pre)]):
        break
      else:
        pre=pre[:-1]
        
    if(pre == ''):
      break
  
  return pre

preκ°€ λ°°μ—΄μ˜ λ‚˜λ¨Έμ§€ λ¬Έμžμ—΄μ˜ μ•žμ— μžˆλŠ”μ§€ 검사 ν•œλ‹€.
μ—†λ‹€λ©΄ pre의 λ§ˆμ§€λ§‰ κΈ€μžλ₯Ό νƒˆλ½μ‹œν‚€κ³ 
λ‹€μ‹œ 검사λ₯Ό 진행 ν•œλ‹€.

κ·Έλ ‡κ²Œ μ§„ν–‰ν•΄μ„œ 얻은 μ΅œμ’… preλ₯Ό λ°˜ν™˜ν•œλ‹€.
λ§Œμ•½ preκ°€ λͺ¨λ‘ νƒˆλ½λ˜μ–΄ 빈 λ¬Έμžμ—΄μ΄ 되면 빈 λ¬Έμžμ—΄μ„ λ°˜ν™˜ ν•œλ‹€.






짝 풀이

def get_prefix(strs):
	ans = ''
	if len(strs) == 0:
	return ''
    
	strs = sorted(strs)
	for idx,i in enumerate(strs[0]):
		if i == strs[-1][idx]:
			ans += i
		else:
			break
	return ans
    
#print(get_prefix(['abc', 'acd', 'ade']))

strsλ₯Ό μ •λ ¬ν•˜μ—¬ 처음 μ›μ†Œμ™€ λ§ˆμ§€λ§‰ μ›μ†Œμ˜ λ¬Έμžμ—΄μ„ λΉ„κ΅ν•˜μ—¬ λ™μΌν•œ λ¬Έμžμ—΄μ„ ans에 μ €μž₯ν•˜κ³  λ°˜ν™˜ν•œλ‹€.

파이썬 sorted ν•¨μˆ˜κ°€ λ‹¨μˆœνžˆ κ°€μž₯ 처음 λ¬Έμžμ—΄μ„ κΈ°μ€€μœΌλ‘œλ§Œ μ •λ ¬ν•΄μ£ΌλŠ” κ²ƒμœΌλ‘œ μ•Œκ³  μžˆμ—ˆλŠ”λ°,
λ¬Έμžμ—΄μ˜ μ²˜μŒλΆ€ν„° 끝에 이λ₯΄κΈ° κΉŒμ§€λ₯Ό λͺ¨λ‘ κ³ λ €ν•˜μ—¬ μ•ŒνŒŒλ²³ 순으둜, λ””ν…ŒμΌν•˜κ²Œ μ •λ ¬ν•΄μ€€λ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€.

profile
β€œLife is C (Choice) between B (Birth) and D (Death).” - 인생은 B와 Dμ‚¬μ΄μ˜ C

0개의 λŒ“κΈ€