https://school.programmers.co.kr/learn/courses/30/lessons/12936
나의풀이
import java.util.*;
class Solution {
public int[] solution(int n, long k) {
int[] answer = new int[n];
long cnt=1;// 가능한 총 개수
List<Integer> list = new ArrayList<>();//n명의 사람들 저장
for(int i=1; i<=n ;i++){
list.add(i);
cnt*=i;
}
k--; //0번째 수부터 존재하니까 1빼주기.
int idx=0;
while(idx < n){//자리수를 내려가면서 반복
cnt= cnt/(n-idx); //전체개수 / 요소개수 = 단위 (어떠한 수가 첫번째인 방법의 개수)
answer[idx++]=list.remove((int)(k/cnt));//idx번째 수
k=k%cnt;//k%cnt번째수를 다음자리에서 또 구하면 된다.
}
return answer;
}
}
참고한 링크
https://gogoma.tistory.com/150
'코테풀이' 카테고리의 다른 글
[프로그래머스] 멀쩡한 사각형 java 풀이( LEVEL2) (0) | 2023.05.29 |
---|---|
[프로그래머스] 호텔 대실 java 풀이(LEVEL2) (0) | 2023.05.25 |
[프로그래머스] 연속된 부분 수열의 합 java 풀이(LEVEL2) (0) | 2023.05.22 |
[프로그래머스] 롤케이크 자르기 java풀이 (LEVEL2) (0) | 2023.05.20 |
[프로그래머스] n^2 배열 자르기 java 풀이(LEVEL2) (0) | 2023.05.20 |