エンコードテスト準備履歴-Day 3


インプリメンテーションアルゴリズム
実施とは?
頭の中のトラブルシューティングアルゴリズムをソースコードに変換するプロセス.
  • 例:文字列処理、アルゴリズムは簡単であるが、コードが長すぎる;実数表現問題
  • 問題は、よく読んで要求通りに実施する必要がある問題であるため、難易度はそれほど高くない.
  • 実施形態は、シミュレーションおよび完全ナビゲーションの問題を含む.
  • シミュレーションと完全ナビゲーションの問題では,方向ベクトルが主に用いられる2次元空間における多くの問題を解決する必要がある.
    - ex) dx = [0, -1, 0, 1], dy = [1, 0 .-1. 0]
  • 💡 に質問上下左右
  • ユーザからコマンドを入力最終位置座標を出力する問題
  • .
  • 方向ベクトルによるトラブルシューティング
  • トラブルシューティングコード
  • def main():
        matrix_size = int(input())
        commands = input().split()
    
        # x, y 초기화
        x, y = 0, 0
        # x, y 좌표 변화 리스트
        #     좌 우 상 하
        dx = [0, 0, -1, 1]
        dy = [-1, 1, 0, 0]
        command_types = ['L', 'R', 'U', 'D']
    
        for command in commands:
            for i in range(len(command_types)):
                if command == command_types[i]:
                    nx = x + dx[i]
                    ny = y + dy[i]
    
            if nx < 0 or ny < 0 or nx >= matrix_size or ny >= matrix_size:
                # out of range error
                continue
            # 실제 이동 수행
            x, y = nx, ny
    
        print(x,y)
    
    if __name__ == "__main__":
        main()
    https://github.com/ybkim-dev/algorithms/blob/master/実施/上下左右%20,%20 mem%20 cacheなし。py
    💡 問題2.時刻
  • 0からN点59分59秒の間の視点で3が入ると問題を解く
  • .
  • すべての時間は3つの方向に回転し、文字列処理によって「3」(Brute Forward)
  • を見つけて解決する.
    注意:Pythonは毎秒約2000万回の演算を実行でき、24 x 60 x 60=86400であるため、を実行できる.
  • トラブルシューティングコード
  • def main():
        # 3이 하나라도 포함되는 경우의 수 구하기
        n = int(input())
    
        count = 0
        # 0 ~ N 시 59분 59초까지 3이 포함되는 경우.
        for i in range(n+1):
            # 분
            for j in range(60):
                for k in range(60):
                    if '3' in str(i) + str(j) + str(k):
                        count += 1
        print(count)
    
    if __name__ == "__main__":
        main()
    https://github.com/ybkim-dev/algorithms/blob/master/インプリメンテーション/視点。py
    💡 に質問王室の夜
  • チェスゲームの夜指定位置で移動可能な場合の求数問題
  • dxは、dy方向ベクトルを作成することによって2次元配列を解決または結合することによって問題を解決する
  • .
  • 「a 1」文字列を入力し、「a」を1と理解するint(文字)-int(ord(「a」)+1を見つけます.
  • 注:ord():戻り文字はAskiコード値<=>chr()
  • として返されます.
  • トラブルシューティングコード
  • def main():
        # 나이트의 이동 가능 경우의 수 구하기
        knight_point = input()
        row = int(ord(knight_point[0])) - int(ord('a')) + 1
        col = int(knight_point[1])
    
        # 나이트의 이동 가능 row, col 좌표
        d_row = [2, 1, -1, -2, -2, -1, 1, 2]
        d_col = [1, 2, 2, 1, -1, -2, -2, -1]
        count = 0
        for i in range(len(d_row)):
            nx = row + d_row[i]
            ny = col + d_col[i]
            # out of range error.
            if nx <= 0 or nx > 8 or ny <= 0 or ny > 8:
                continue
            else:
                count += 1
        print(count)
    
    if __name__ == "__main__":
        main()
    https://github.com/ybkim-dev/algorithms/blob/master/実施/王室%20泊。py
    💡 に質問文字列の再配置
  • アルファベット、数字を入力した後にアルファベットの順序で並べ替えて、数字は問題の
  • を求めます
  • 文字と数字を分類し、
  • を解決するためにそれぞれ演算する.
  • トラブルシューティングコード
  • s = input()
    
    string_list = []
    number_list = []
    for i in range(len(s)):
        # 문자열이면 문자열 리스트에 담기
        if s[i].isalpha():
            string_list.append(s[i])
        # 숫자면 숫자 리스트에 담기
        else:
            number_list.append(s[i])
    
    # 문자열 정렬
    string_list.sort()
    # 숫자 합
    sum = 0
    for number in number_list:
        sum += int(number)
    
    for i in range(len(string_list)):
        print(string_list[i], end='')
    print(sum)
    https://github.com/ybkim-dev/algorithms/blob/master/文字列%20を実装/再配置します。py