明日学習キャンプ25日目TIL

12517 ワード

開発ログの開始


アルゴリズム3日目給油

開発作業内容


アルゴリズムの説明

今日の話題/悩み...そして解決した問題


1. stack


  • は線形構造(LIFO=Last In First Out)を採用し、後進=>後退、取り消しなど
  • push(data):データ
  • を上に配置する
  • pop:一番上のデータを抜く
  • peek:一番上のデータを表示
  • 空:スタックが空であるかどうかを確認する
  • Pythonでは、リストを使用してスタック
  • を実装することができる.
    stack = []            # 빈 스택 초기화
    stack.append(4)       # 스택 push(4)
    stack.append(3)       # 스택 push(3)
    top = stack.pop()     # 스택 pop
    print(top)            # 3!

    2. queue


  • スタックとは異なり、先入先出(FIFO,First In First Out)方式で一端から挿入し、他端から削除=>順番に処理する必要があること(幅優先検索,銀行業務など)
  • を採用している.
  • 先入先出方式を採用し、データを挿入または削除するだけの方を前
  • と呼ぶ.
  • enqueue(データ):バックエンドにデータを追加
  • dequeue:frontデータ抽出
  • peek:最下位のデータを表示
  • 空:
  • が空であるかどうかを確認します.

    3.Python入力受信

  • input
    -無条件に文字列を返します.数値を計算するにはintに変換する必要があります.
  • str = input()
    num = int(input())
  • input.split()
    -文字列を特定の区切り文字に分割します.デフォルトではスペースベースで分割されます.
  • は複数の変数に格納できますが、文字列状態なので、数値を計算する際にintを使用して整数に変換する必要があります->毎回map(int,input()が面倒です.split()
  • の使用
    # [python input split]
    str = input().split()
    >>> ['python', 'input', 'split']
    
    s, t, r = input().split()
    >>> python input split
    
    # 1 2 3
    num1, num2 = input().split()
    str = num1 + num2
    num = int(num1) + int(num2)
    >>> 12
    >>> 3
  • map()
    -map(変換関数、巡回可能データ)
    -元のリストを変更せずに新しいリストを作成
    -mapオブジェクト(mapオブジェクト)を返すため、listまたはtupleに変換する必要があります.
    -反復可能オブジェクト(iterator object)
  • を返します.
    a, b, c = map(int, input().split())
    >>> 1 2 3
    
    b = map(str, input().split())
    print(b)
    print(list(b))
    >>> <map object at 0x107d93a60>
    >>> ['1', '2', '3']
  • sys.stdin.readline()
    -input()ではなく、大量のデータを繰り返し入力するときにinput()を使用すると、strip()が適用されず、書き換え文字も含まれるため、input()よりも高速になります.
  • JavaではBufferedReaderがScannerよりも高速
  • import sys宣言
  • が必要です
  • 動作単位で入力->整数を1つだけ入力場合nも一緒に保存し、
  • を削除する必要があります.
    import sys
    
    # 한 개의 정수를 입력 받아 저장할 때
    read =  int(sys.stdin.readline())
    
    # 정해진 개수의 정수를 입력 받아 저장할 때
    a, b, c = map(int, sys.stdin.readline().split())
    
    # 임의의 개수의 정수를 입력받아 리스트에 저장할 때
    data = list(map(int, sys.stdin.readline().split()))
    
    # 임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장할 때
    data = []
    n = int(sys.stdin.readline())
    for i in range(n):
        data.append(list(map(int,sys.stdin.readline().split())))
    
    # 문자열 n줄을 입력받아 리스트에 저장할 때, strip()은 문자열 앞과 끝의 공백 제거
    n = int(sys.stdin.readline())
    data = [sys.stdin.readline().strip() for i in range(n)] 

    To-do List


    アルゴリズム4週目java講義3週目

    リファレンス


    https://wikidocs.net
    https://dojang.io/