[Baekjoon] 2210 숫자판 점프 python

sorzzzzy·2021년 8월 17일
0

Baekjoon Algorithm

목록 보기
40/46
post-thumbnail

🏷 문제



💡 코드

from sys import stdin

def find(x,y,s):
    s += str(num_board[x][y])
    case = [[-1,0],[1,0],[0,-1],[0,1]]
    # 문자열 길이가 6이면 즉시 리턴
    if len(s) == 6:
        res_list.append(s)
        return 
    for c in range(4):
        newx, newy = x+case[c][0], y+case[c][1]
        # 범위확인
        if 0 <= newx < 5 and 0 <= newy < 5:
            find(newx,newy,s)

res_list = []
num_board = []
for _ in range(5):
    b = list(map(int,stdin.readline().split()))
    num_board.append(b)

for row in range(5):
    for col in range(5):
        s = ''
        find(row,col,s)

# 중복 제거
res_list = set(res_list)
print(len(res_list))


📌

내가 접근한 방법!!
문자열 길이가 6이 될 때 까지 그래프를 탐색하면서 문자열을 만들고,
길이가 6이 되면 중복을 제거하고(set()사용) 결과값에 넣어주고 최종 결과값의 길이를 출력해준다!

  • 0으로 시작하는 문자열도 취급해주어야 하기 때문에 문자열을 만들 때, 숫자를 문자로 변환해주었다.
  • 마지막에 set()을 사용해 리스트에 있는 요소들의 중복을 제거해주었다.

    💡 list 에서는 원소를 추가할 때 append()를 쓰지만 set 에서는 add()를 사용한다고 한다 !!

profile
Backend Developer

0개의 댓글