[コードテスト]これがコードテストです01.Python文法整理


これが符号化テストです。


(羅東彬、⌝これは就職のためのコードテスト⌝、韓光メディア、2020年)

01.Python文法整理


01.リスト関連メソッド



02.集合資料型紹介

  • および:"|"
  • 校正集合:"&"
  • 回集合:"-"
  • 新しい要素:dataを追加します.add()
  • 複数の新しい要素:dataを追加します.update()
  • 特定の値の要素:dataを削除します.remove
  • 03.入出力

  • 通常入力エンクロージャ
  • 入力に使用される通常のソースコード

    data = list(map(int, input().split()))

    スペースで区切られた少量のデータ入力

    n,m,k = map(int, input().split())
  • 入力速度が速い(入力値が大きい場合)
  • sysはinput関数が遅いため使用します

    import sys
    sys.stdin.readline().rstrip()
    readline()を入力すると、入力後にエンティティが改行として入力されます.
    空白文字を削除するにはrstrip()関数を呼び出す必要があります.
  • f-string(出力時)
  • カッコを使用して変数を文字列に挿入できます.
    answer = 8
    print(f"정답은 {answer}입니다.")
    
    => 정답은 8입니다.

    04.主要ライブラリ

  • 内蔵関数:print()、input()、sorded()、...
  • itertools:データ処理を繰り返すライブラリ(シーケンス、組合せ)
  • heapq:hip機能ライブラリ(優先キュー)
  • 対分:バイナリナビゲーションライブラリ
  • セット:DequeやCounterなどのデータ構造を含むライブラリ
  • math:数学機能ライブラリ(工場、平方根、最大公約数、三角関数...)
  • 組み込み関数

  • eval():数式が文字列で入力された場合、
  • ソート():ソート結果
  • を返します.
    result = sorted([ ('홍길동', 35), ('이순신', 75), ('아무개', 50) ],
        key = lambda x: x[1],
        reverse = True
        )
    前に示したようにkey、reverseパラメータを使用できます!

    itertools:配列、組合せクラスを使用可能

  • 配列:シーケンス
  • from itertools import permutations
    
    data = ['A', 'B', 'C']
    
    result = list(permutations(data, 3)) # 3개 뽑는 순열
    
    => [('A','B','C'), ('A','C','B')...]
  • 組合せ:組合せ
  • data = ['A', 'B', 'C'] 
    result = list(combinations(data, 2)) # 2개 뽑는 조합
    => [('A','B'), ('A','C'), ('B','C')]
  • 製品:繰り返しシーケンス
  • 組合せwith置換:繰返し組合せ
  • heapq:最小hipを構成します。


    heapq.heappush()heappush()heappush()heappush()heappush()heappush()heappush()heappush()heappush()heappush()heappush
    heapq.heapppop()heapppop()heapppop()heapppop()heapppop()heapppop()heapppop()heapppop
    # 힙정렬(최소힙)
    import heapq
    def heapsort(iterable):
      h = []
      result = []
      # 모든 원소 차례대로 힙에 삽입
      for value in iterable:
        heapq.heappush(h, value)
      # 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
      for i in range(len(h)):
        result.append(heapq.heappop(h))
    return result
    # 최대힙 => 원소의 부호를 임시로 반대로!
    import heapq
    
    def heapsort(iterable):
      h = []
      result = []
      for value in iterable:
        heapq.heappush(h, -value)
      # 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
      for i in range(len(h)):
        result.append(-heapq.heappop(h))
    return result

    bisect:バイナリナビゲーション、整列配列で要素を検索する必要がある場合!


    対left(a,x):リストaにデータxを挿入する最も左側のインデックスを検索し、ソート順を維持します.
    対分right(a,x):リストaにデータxを挿入してソート順を維持する右端インデックスを検索します.
    from bisect import bisect_left, bisect_right
    a = [1,2,4,4,8]
    x = 4
    print(bisect_left(a,x))
    print(bisect_right(a,x))
    
    => 2
    => 4
    「ソート・リスト」から「値が特定の範囲に属する要素数」を求める
    from bisect import bisect_left, bisect_right
    
    # 값이 [left_value, right_value]인 데이터의 개수를 반환
    def count_by_range(a, left_value, right_value):
    
      right_index = bisect_right(a, right_value)
      left_index = bisect_left(a, left_value)
    
      return right_index - left_index
    
    a = [1,2,3,3,3,3,4,4,8,9]
    
    # 값이 4인 데이터 개수
    print(count_by_range(a,4,4))
    # 값이 [-1, 3] 범위에 있는 데이터 개수
    print(count_by_range(a,-1,3))
    
    => 2
    => 6

    collections: deque, Counter

  • Deque:キュー実装
    リスト資料型はappendで、popはすべて“最も後ろの要素”を標準にします!
  • dequeはインデックスとスライドをサポートしていません!
    連続してリストされたデータの先頭と末尾にデータを挿入および削除するのに適しています.
    スタックまたはキューのすべての機能が含まれます.
    Popleft():最初の要素を削除
    pop():最後の要素を削除
    appendleft(x):最初のインデックスに要素xを挿入
    append():最後のインデックスに要素を挿入
    from collections import deque
    
    data = deque([2,3,4])
    data.appendleft(1)
    data.append(5)
    
    print(data)
    print(list(data))
    
    => deque([1,2,3,4,5])
    => [1,2,3,4,5]
  • Counter:登場回数を集計する機能
  • from collections import Counter
    
    counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
    
    print(counter['blue'])
    print(counter['green'])
    print(dict(counter))
    
    => 3
    => 1
    => {'red': 2, 'blue': 3, 'green': 1}

    math

  • 階乗(x):工場
  • import math
    
    print(math.factorial(5))
    
    => 120
  • sqrt(x):平方根
  • import math
    
    print(math.sqrt(7))
  • pi(π),pi(自然定数)
  • import math
    
    print(math.pi)
    print(math.e)
    
    => 3.1415925
    => 2.7182818