inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Giới thiệu về giải bài toán bằng thuật toán Python (chuẩn bị cho bài kiểm tra viết mã)

8. Tìm hoán vị (DFS)

중복 제거 조건 질문

229

wooli60499

8 câu hỏi đã được viết

0

제가 처음에 중복제거 조건을 flag를 이용한게 아니라 아래와 같이 res에 없는 원소이면 넣는거로 중복제거를 하려고 접근을 했습니다.

답이 [3,1], [3,2]는 들어가지 않았는데 혹시 이렇게 접근하면 왜 안되는건지 설명 부탁드릴 수 있을까요? 잘 이해가 안가서요 ㅠㅠ

감사합니다!

n = 3
m = 2
res = [0 for i in range(m)]
cnt =
0
def DFS(index):
global cnt
if index == m:
print(res)
cnt+=
1
return
else:
for i in range(n):
if i+1 not in res:
res[index] = i+
1
DFS(index+1)
DFS(
0)
print(cnt)

--------
[1, 2] [1, 3] [2, 1] [2, 3] 4

python 코테 준비 같이 해요!

Câu trả lời 2

0

wooli60499

아 그렇겠네요! 이해했습니다 감사합니다!

0

codingcamp

[2, 3]에서 index값만 작아지면서 2값이 있는 자리에 3을 넣으려고 하면 이미 res에 3이 있기 때문에 if i+1 not in res 가 참이 되지 않아 [3, 2]로 진행되지 않는 것입니다. 이런 방법으로 할 때는 index가 작아질 때 res의 값도 지우고 작아져야 합니다.

아래 코드처럼 하면 답이 나옵니다.

n = 3
m = 2
res = [0 for i in range(m)]
cnt = 0
def DFS(index):
    global cnt
    if index == m:
        print(res)
        cnt+=1
    else:
        for i in range(n):
            if i+1 not in res:
                res[index] = i+1
                DFS(index+1)
                res[index]=0
DFS(0)
print(cnt)

기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.

1

77

2

스택에서 ')'을 만나는 경우

0

78

3

문제가 어디있나요?

0

65

2

변수 or 함수명

0

61

1

침몰하는 타이타닉 문제 질문입니다

0

56

1

AA.py 책점 에러

0

57

1

오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.

0

111

2

5.동전분배하기 문제 밑에코드도 정답이될까요?

0

110

1

아나그램 비교 코드

0

116

2

AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.

0

160

2

문제 링크가있나여?

0

147

2

채점기 Time Limit Exceeded 오류 문의

1

163

2

동적계획법은 사용하는 문제

0

126

2

제 코드 좀 봐주세요

0

148

1

예외가 존재할 가능성?

0

97

1

3번이 안풀립니다

0

93

0

5번 틀림

0

114

0

오류원인?

0

98

0

리스트 선언

0

106

1

침몰하는 타이타닉(그리디) 문제 질문

0

109

1

알고리즘

0

69

1

코딩테스트

0

92

1

DFS 순서 질문드립니다.

0

126

2

left, right를 사용한 풀이법에 대한 질문입니다

0

91

1