소스 코드
def dfs(idx):
global temp
global max_lst
for e in range(n):
# 방문한적 없고, 암나사 == 수나사이면
if check_lst[e] == 0 and sort_lst[e][0] == idx:
# 방문 체크
check_lst[e] = 1
# temp에 암 수 나사 추가
temp.append(sort_lst[e][0])
temp.append(sort_lst[e][1])
# 함수 실행
dfs(sort_lst[e][1])
# max_lst보다 temp의 길이가 길면(현재의 최대 길이면)
if len(max_lst) < len(temp):
max_lst = temp
return
T = int(input())
for tc in range(1,1+T):
n = int(input())
temp_lst = list(map(str,input().split()))
# append 안 하기 위해(속도 높이기 위해)
lst = [0 for _ in range(n)]
# lst에 저장
for q in range(n):
lst[q] = [temp_lst[2*q], temp_lst[2*q+1]]
# 정렬
sort_lst = sorted(lst, key=lambda x:x[0])
# 최대 길이 저장
max_lst = []
for w in range(n):
# 방문 확인용
check_lst = [0 for _ in range(n)]
temp = [sort_lst[w][0],sort_lst[w][1]]
check_lst[w] = 1
dfs(sort_lst[w][1])
check_lst[w] = 0
print('#{}'.format(tc),end=' ')
for r in max_lst:
print(r, end=' ')
print()
해결 방법
1. 조건을 n을 20 이하, 암나사의 크기의 중복은 없고, 수나사의 크기의 중복은 없다로 제한(주어진 조건이 부족하기 때문)
2. return 하면서 돌아갈 필요 없음(암나사와 수나사의 크기가 1개만 존재하기 때문 == 하나만 찾으면 같은 숫자는 더 확인할 필요 없음)
느낀 점
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] S/W 문제해결 응용 달란트2 - PYTHON #1265 (0) | 2021.06.07 |
---|---|
[SWEA 코딩] S/W 문제해결 응용 공통조상 - PYTHON #1248 (0) | 2021.06.06 |
[SWEA 코딩] S/W 문제해결 응용 K번째 접미어 - PYTHON #1256 (0) | 2021.06.05 |
[SWEA 코딩] Base64 Decoder - PYTHON #1928 (0) | 2021.06.03 |
[SWEA 코딩] S/W 문제해결 응용 최적 경로 - PYTHON #1247 (0) | 2021.05.29 |