재귀를 쓰면 되긴 하는데 성능이 문제가 될 수 있음
스택을 써도 되지만 스택 정의하는게 부담스러움
결정적으로 둘 다 이해하는게 그리 쉽지 않을 수 있음
보통 재귀나 스택 알고리즘에 익숙하지 않은 프로그래머가
n자리 순열을 전부 출력하려면
일단 보통 가장 먼저 드는 생각은 n중 for문을 쓰는 거임..
수-도 코드로 3자리 순열 뽑는 코드를 써보면..
for i = 1~3:
for j = 1~3:
if j != i:
for k = 1~3:
if k != i:
if k!= j:
print i,j,k
(대충 파이슨으로 옮기면 작동할 것임)
이건 4자리 순열 파이슨 코오드
for i in range(1,4+1):
for j in range(1,4+1):
if j != i:
for k in range(1,4+1):
if k != i:
if k!= j:
for l in range(1,4+1):
if l != i:
if l != j:
if l != k:
print(i,j,k,l)
결과:
1 2 3 4 1 2 4 3 1 3 2 4 1 3 4 2 1 4 2 3 1 4 3 2 2 1 3 4 2 1 4 3 2 3 1 4 2 3 4 1 2 4 1 3 2 4 3 1 3 1 2 4 3 1 4 2 3 2 1 4 3 2 4 1 3 4 1 2 3 4 2 1 4 1 2 3 4 1 3 2 4 2 1 3 4 2 3 1 4 3 1 2 4 3 2 1ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
이거 만약에 되면 이거랑 비슷한 문제는 죄다 날로 쳐먹을 수 있음
주사위 n개로 합 s가 나오는 경우를 모두 출력하라
n만원을 500,100,10원으로 바꾸는 방법을 모두 출력하라
이런 거 다 될 듯 ㅇㅇ;
하 근데 런타임에 n을 입력하는 거면 결국 n에 따라서 코드가 졸라 많아야 되는건가 음....
무의미한건가....
n자리 순열은 for문으로 해결했따 int n=6;//input 알아서 받으셈 String s = "%0"+n+"d\n"; for(int i=0;i<Math.pow(10, n); i++){ System.out.printf(s, i); }
헐 엔터 안받아주네~~~~~~
그냥 0 부터 999까지 for문 하나면 되는거 아님? n번째수 구하고 싶으면 그때마다 나누기랑 모듈러로 구하고
잠깐 뭔가 잘못 썼다
nested 의 갯수를 바꾸고싶은것일듯
그거긴 한데 제가 완전 헛소리를 해놓았읍니다
글 지우고 싶다...
순열은 중복이 없어야 되는데 그거를 잊고 있었음
수정했닥
그러다 츄럴님은 조합론의 길로 빠지게 되는데..
ㅋㅋㅋ 꿀잼이지 조합과 경우의 수
https://soooprmx.com/archives/5523