티스토리 뷰

1. 일단 어느 곳에서 시작이 가능하기 때문에 이중for문을 사용하여 모든 원소에서 시작하게 했다.(함수)

2.함수에서 4방 탐색을 한다. 글자수는 7자이기 때문에 cnt가 8번이 되면 종료하는 것으로 짰다.

3.중복을 없애기 위해서 set()으로 받았다.


def move(x,y,cnt):
    global num
    if cnt == 8: #8번 돌아가면 종료
        num.add("".join(temp)) # join에서 str로 받아달라해서 MAP원소들을 int형에서 str로 바꿈
        return
    #우
    if y+1 < 4:
        temp[cnt-1] = MAP[x][y+1]
        move(x,y+1,cnt+1)
    #하
    if x+1 < 4:
        temp[cnt-1] = MAP[x+1][y]
        move(x+1,y,cnt+1)
    #상
    if x-1 >= 0:
        temp[cnt-1] = MAP[x-1][y]
        move(x-1,y,cnt+1)
    #좌
    if y-1 >= 0:
        temp[cnt-1] = MAP[x][y - 1]
        move(x,y-1,cnt+1)

T = int(input())

for tc in range(1,T+1):
    MAP = [list(input().split()) for _ in range(4)]
    # 모든 좌표에서 시작
    num = set()
    temp = ['','','','','','','']
    for i in range(4):
        for j in range(4):

            move(i,j,1)


    print("#{} {}".format(tc, len(num)))

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 1486. 장훈이의 높은 선반  (0) 2021.04.18
[SWEA] 1970.쉬운 거스름돈  (0) 2021.04.16
[SWEA] 4366. 정식이의 은행업무  (0) 2021.04.16
[SWEA] 5202 . 화물 도크  (0) 2021.04.15
[SWEA] 5201. 컨테이너 운반  (0) 2021.04.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함