TIL|3週1)CodeKata


質問です。



def two_sum(nums, target):
    # 아래 코드를 작성해주세요.

1.私の解決方法(雑然とした)

from itertools import permutations

def two_sum(nums, target):
    # 아래 코드를 작성해주세요.

    list_1 = list(permutations(nums, 2))
    list_2 =[]

    for i in list_1:
      if i[0] + i[1] == target:
        a = nums.index(i[0])
        b = nums.index(i[1])
        list_2.append(a)
        list_2.append(b)
        return list_2
        break
      else:
        continue  

2.チロンから学んだ方法(清潔)

def two_sum(nums, target):
    # 아래 코드를 작성해주세요.

    for i_idx , i_val in enumerate(nums) :
      for j_idx, j_val in enumerate(nums) :
        if i_val + j_val == target :
          return [i_idx, j_idx]

新しい理解の概念:列挙

  • 列挙:リスト
  • 순서가 있는 자료형(list, set, tuple, dictionary, string)インデックス値を含む列挙オブジェクトを返す
  • 戻り値は多重グループ形式
  • t = [1, 5, 7, 33, 39, 52]
    for p in enumerate(t):
      print(p)
    # (0, 1)
    # (1, 5)
    # (2, 7)
    # (3, 33)
    # (4, 39)
    # (5, 52)
    
    
    str = "enumerate"
    for i in enumerate(str):
      print(i)
    # (0, 'e')
    # (1, 'n')
    # (2, 'u')
    # (3, 'm')
    # (4, 'e')
    # (5, 'r')
    # (6, 'a')
    # (7, 't')
    # (8, 'e')
    
    
    obj = {'이름':'김민호', '나이':'30'}
    for j in enumerate(obj):
      print(j)
    # (0, '이름')
    # (1, '나이')
    
    
    obj1 = {'이름':'김민호', '나이':'30'}
    for k in enumerate(obj1.items()):
      print(k)
    # (0, ('이름', '김민호'))
    # (1, ('나이', '30'))

    質問です。



    1時間くらいシャベルしたけど、結局抱っこできなかった、ふふ
    def reverse(number):
      # 여기에 코드를 작성해주세요.
      if number > 0:
        str_n = str(number)[::-1]
        return int(str_n)
    
      elif number < 0:
        str_n1 = str(number)[1:] 
        return int(str_n1[::-1]) * -1
        
      else:
        return 0  

    新しいコンセプト:索引


    ::2

    string = "홀짝홀짝홀짝"
    
    print(string[0:5:2]) 
    print(string[::2])
    # 홀홀홀

    ::-1

    string = "홀짝홀짝홀짝"
    
    print(string[::-1])
    # 짝홀짝홀짝홀

    質問です。


    今週一番難しい問題!
    def get_len_of_str(s):  	  # s = sttrg로 주어진다고 가정
     
     result = 0			  # 가장 긴 길이를 반환하기 위해 선언
     string = ''			  # 알파벳 담을 빈 배열 선언
    
     for i in s:			  # 주어진 단어 sttrg의 알파벳 하나하나에 접근
       if i not in string:		  # 빈 배열에 i가 없으면
         string = string + i 	  # 담아. 그럼 st 까지 담길것 
       elif i in string:		  # 2번째 t는 이미 string에 담겨있으니까 이때
         if len(string) > result:     # string의 길이와 result=0 비교해서 전자가 길면
           result = len(string)       # result는 string의 길이로 다시 선언
           string = i 		  # 그리고 'st'였던 string은 i=t로 다시 선언
     
     return max(len(string), result)  # 그리고 for문을 다 돌고 나와서 리턴값으로 둘 중에 긴 값 반환 
  • 切り込み点:戻り長の問題であるため、空の配列とゼロの開始点を宣言する
  • 私は聡明ではありませんが、聡明な人の思考を学ぶのは本当に面白いです.ハハ
  • 質問です。


    
    def same_reverse(num):
        # 아래 코드를 입력해주세요.
        str_num = str(num)
        result = '' 
    
        for i in str_num:
          result = i + result
    
        if result == str(num):
          return True
    
        else:
          return False
    ドアをforドアの中に置くと、いくつかのテストに合格できません.なぜですか.
    この場合、if文はパラメータとして受信されたstr numに変換される.
    str numの各要素はifゲートを迂回するためエラーが発生します.

    質問です。


    def get_prefix(strs):
      sorted_strs = sorted(strs)
      res = ''
    
      if len(strs) == 0:    # 이 부분을 끝까지 생각 못했음 ㅠㅠ
        return ''
    
      for idx, i in enumerate(sorted_strs[0]):
        if i == sorted_strs[-1][idx]:
          res = res + i
        else :
          break
    
      return res
    
    print(get_prefix(['start', 'stair', 'step']))
  • 着目点:ソート()関数が重要!1時間悩んでやっと思いついた.ㅠㅠソート後、最初の単語と最後の単語の各インデックスのアルファベットを比較し、同じであれば中間の単語は同じ