Code kata week 1

Woo Hwukjun·2020년 12월 4일
0
post-thumbnail

Day1

two_sum함수에 숫자 리스트와 '특정 수'를 인자로 넘기면,더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.

nums: 숫자 배열 / target: 두 수를 더해서 나올 수 있는 합계 / return: 두 수의 index를 가진 숫자 배열

def two_sum(nums, target): #nums은 [4, 9, 11, 14] target은 13
  for i in range(len(nums)):
    for j in range(len(nums)):
      if nums[i] + nums[j] == target: #nums[0] + nums[1] = 4 + 9 = 13 이죠?
        return [i,j] #그러면 [0, 1]이 return 되어야 합니다.

Day 2

reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.
x: 숫자 / return: 뒤집어진 숫자를 반환!

def reverse(number): #( ex) -87120 )
  string = str(number) # int를 string으로 바꿔준다. ex) '-87120'
  if string[0] == '-':  # 마이너스일때는 -3 일때 -3이 출력이안되고 '3-' 이렇게 출력된다.
    string = string[::-1] # reverse를 해준다. ex) 02178-
    return int((string[-1])+string[:-1]) # 021278-리턴값을 정리하자면 int값안에
    					(string[-1] = '-'를 가지고있고 string[:-1] '02178') 전환해준다.
  return int(string[::-1])

Day 3

String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트 / return: 중복되지 않은 알파벳 길이 (숫자 반환)

str = "sttrg"
return은 3
=> 'trg' 가 제일 길기 때문
str = "abcabcabc"
return은 3
=> 'abc' 가 제일 길기 때문

def get_len_of_str(s):
    word = ''  # 현재 분석중인 중복 없는 단어
    word_list = []  # 현재까지 찾은 중복 없는 단어들
    # 파라미터로 넘어온 텍스트가 공백('')이면 0 을 return
    if s == '':
        return 0
    # abcax
    # 파리미터로 넘어온 텍스트에서 한 글자씩 꺼내서 분석 시작
    for i in s:
        # word(현재 분석중인 중복 없는 단어)에 i(파라미터에서 하나씩 꺼낸 글자)가 없으면(중복되는 글자가 없으면) 해당 글자를 word 제일 뒤에 붙임
        if i not in word:
            word += i
            # i 가 파라미터로 넘어온 텍스트의 마지막 글자이면 현재 word 를 word_list 에 저장
            if i == s[-1]:
                print(word)
                word_list.append(word)
        # word 에 i 가 있으면 (중복되는 글자가 나타나면) word_list 에 word 를 추가하고 word 를 i로 초기화
        else:
            word_list.append(word)
            word = i
    # 파라미터로 넘어온 모든 텍스트에 대해서 for 문을 다 돌면 word_list 에 글자 중복 없는 단어들 목록이 담김
    # 리스트에서 가장 긴 단어를 찾아서 그 길이를 answer 에 할당하여 리턴
    answer = len((max(word_list, key=len)))
    print(word_list)
    print(max(word_list, key=len))
    print(len((max(word_list, key=len))))
    return answer

Day 4

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.
num: 숫자 (123)
return: true or false (뒤집은 모양이 num와 똑같은지 여부) (False)
=> 뒤집은 모양이 321 이기 때문

def same_reverse(num):
  return str(num) == (str(num)[::-1]) #리턴에 값을 넣어주지않으면 True or False로 출력이된다.

Day 5

strs은 단어가 담긴 배열입니다.
공통된 시작 단어(prefix)를 반환해주세요.
예를 들어
strs = ['start', 'stair', 'step']
return은 'st'

def get_prefix(strs):
    prefix = ''
    letter_set = set([])
    max_index = len(max(strs))
    print(f'max_index: {max_index}')
    # 0 번째 글자만 비교하기
    # 1 번째 글자만 비교하기
    index = 0
    while index < max_index:
        for letter in strs:
            print(f'index: {index}')
            print(f'letter: {letter}')
            compare_letter = letter[index]
            print(f'compare_letter: {compare_letter}')
            # set 에 전부 넣은 다음에 set에 남은게 1개면 계속 ㄱㄱ 아니면 중단
            letter_set.add(compare_letter)
        if len(letter_set) == 1:
            print(f'letter_set: {letter_set}')
            prefix += compare_letter
            index += 1
            letter_set = set([])
        else:
            print(f'prefix: {prefix}')
            return prefix
    print(f'prefix: {prefix}')
    return prefix
profile
미래 개발자

0개의 댓글