본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

1226. [S/W 문제해결 기본] 7일차 - 미로1 (코딩테스트, SW Expert Academy)

by 령과 2022. 5. 25.

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14vXUqAGMCFAYD 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

나의 코드

def search_table(table,start,end,record_list,rec):
    able = [[record_list[-1][0]+1,record_list[-1][1]],
            [record_list[-1][0],record_list[-1][1]+1],
            [record_list[-1][0]-1,record_list[-1][1]],
            [record_list[-1][0],record_list[-1][1]-1]]

    for ab in able:
        if table[ab[0]][ab[1]] != 1 and table[ab[0]][ab[1]] != 2 and 3 not in rec: #0 또는 3을 찾았을 때
            rec.append(table[ab[0]][ab[1]])
            table[ab[0]][ab[1]] = 2
            record_list.append(ab)
            search_table(table,start,end,record_list,rec)
            record_list.pop()

T = 10#int(input())
for test_case in range(1, T + 1):
    tc = int(input())
    table = []
    start, end= [], []
    rec = []
    answer = 0
    for i in range(16):
        target = list(map(int,input()))
        table.append(target)
        if 2 in target:
            start = [i,target.index(2)]
        if 3 in target:
            end = [i, target.index(3)]
    record_list = [start]
    search_table(table,start,end,record_list,rec)
    if 3 in rec:
        answer = 1
        
    print(f"#{test_case}",answer)

다른 사람 코드도 확인해보니 내코드가 답도없이 매우 길다는 것을 알게되었다.

실제로 end를 쓰지 않았고 불필요한 부분을 제외하고 탐색하는 표현을 위와 같은 방법말고 [0,0,1,1]이렇게 간단히 줄이면 거의 비슷하지 않을까? 생각은 했다.

댓글