강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

Windfall님의 프로필 이미지
Windfall

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

[필수개념] 순열 : 재귀함수로 만드는 순열

안녕하세요 제가 이해한게 맞는지 궁금합니다.

작성

·

543

0

종이에 그림 그리면서 이해한게 맞는가 궁금합니다

처음 숫자 1, 2, 3

n = 3 r = 3 depth = 0으로 함수 출발

parmutation(3, 3, 0)

i = depth

i = 0, depth = 0

swap(v[i], v[depth);

1과 1을 스왑 = 아무일도 없었다

스왑결과 = 1, 2, 3

parmutation(3, 3, dpeth + 1)출발

parmutation(3, 3, 1)

i = depth

i = 1, depth = 1

swap(v[i], v[depth]);

2와 2를 스왑 = 아무일도 없었다

스왑결과 = 1, 2, 3

parmutation(3, 3, depth + 1)출발

parmutation(3, 3, 2)

i = depth

i = 2, depth = 2

swap(v[i], v[depth]);

3과 3을 스왑 = 아무일도 없었다

스왑결과 = 1, 2, 3

parmutation(3, 3, dpeth + 1)출발

r = 3 depth = 3

입구컷

parmutation(3, 3, 2)로 복귀

아래에있는 swap(v[i], v[depth])진행

원복 결과 = 1, 2, 3

i를 1증가

i = 3, depth = 2

i < n인데 3 < 3은 컷

리턴

parmutation(3, 3, 1)로 복귀

아래에있는 swap(v[i], v[depth)진행

원복 결과 = 1, 2, 3

i를 1증가

i = 2 depth = 1

swap(v[i], v[depth])

3과 2를 스왑 = 1, 3, 2

스왑 결과 = 1, 3, 2

parmutation(3, 3, depth + 1)출발

parmutation(3, 3, 2)

i = depth

i = 2, depth = 2

swap(v[i], v[depth]);

2와 2를 스왑

스왑 결과 = 아무일도 없었다

parmutation(3, 3, depth + 1)출발

parmutation(3, 3, 3)

r = 3 dpeth = 3

입구컷

리턴

parmutation(3, 3, 2)로 복귀

아래에있는 swap(v[i], v[depth])진행

원복결과 1, 3, 2

i 를 1 증가

i = 3, depth = 2

i < n인데 3 < 3은 컷

리턴

parmutation(3, 3, 1)로 복귀

i를 1증가

i = 3 depth = 1

여기도

i = 3, n = 3이라 컷

parmutation(3, 3, 0)으로 복귀

나머지도 이런식인 것 같은데 좀 길어서 읽기 불편하시겠지만 이게 맞나요ㅜㅜ

한 2시간 그림만 그리다가 도출한게 이겁니다 ㅠㅠㅠ

이해가 느린편이라 그런지 통곡의 벽이네요 이거..

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ 이게 사실 첨에는 이해 하기가 힘들죠.

제가 글만 봐서는 잘 모르겠는데 혹시 그리신 그림 첨부 가능하실까요?

그리신 그림 첨부하시면 됩니다. (다시 질문으로 주셔도 되구요)

 

감사합니다.

Windfall님의 프로필 이미지
Windfall

작성한 질문수

질문하기