BOJ/Back Jun-2210-python


質問する📖



に答える🙏

  • 5行の5つの整数は、デジタルボードを与えます.
  • ディジタルボード上の任意の位置から、隣接する4つの方向に5回移動し、各セルの数字を順番に貼り付けると、6桁になります.
  • で移動すると、1回通過した格子を再び通過し、0からの000123を同じ数字にすることができます.
  • を作成できる6つの異なるビット数の数を求めるプログラムを作成します.
  • の最初のローが作成できる数を出力します.
  • コード#コード#💻

    # boj, 2210 : 숫자판 점프, python3
    # 브루트포스 알고리즘, 그래프 탐색, 깊이 우선 탐색
    import sys
    
    def dfs(x, y, number, result):
        if len(number) == 6: 
            if number not in result: 
                result.append(number)
            return
            
        dx = [1, -1, 0, 0] 
        dy = [0, 0, 1, -1] 
        
        for k in range(4):
            ddx = x + dx[k]
            ddy = y + dy[k]
            
            if 0 <= ddx < 5 and 0 <= ddy < 5: 
                dfs(ddx, ddy, number + matrix[ddx][ddy], result)
                
    def solve():
        result = []
        
        for i in range(5):
            for j in range(5):
                dfs(i,j,matrix[i][j], result)
        
        return len(result)
    
    matrix = [list(map(str, sys.stdin.readline().split())) for _ in range(5)]
            
    print(solve())

    結果😎



    ソース&ハーブ📝


    boj
    github