Files
Coding-Practice/programmers/줄 서는 방법/solution.java
T

15 lines
705 B
Java
Raw Normal View History

2023-02-01 23:44:34 +09:00
// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/12936
2023-02-01 23:55:46 +09:00
import java.util.ArrayList;
2023-02-01 23:44:34 +09:00
class Solution {
public int[] solution(int n, long k) {
2023-02-01 23:55:46 +09:00
ArrayList<Integer> al = new ArrayList<>();
int[] answer = new int[n];
2023-02-01 23:44:34 +09:00
int pos, len = n;
long div, tmp, fact = 1;
for(int f = n; f >= 2; f--) fact *= f;
2023-02-01 23:55:46 +09:00
for(int a = 1; a <= len; a ++) al.add(a);
for(int a = 0; a < len; div = fact/n, pos = (int)((k-1)/div), answer[a] = al.remove(pos), k -= pos*div, fact /= n, n--, a++) continue; // 별 의미는 없지만 이런 식으로 안의 내용을 for 괄호 내에 다 때려박아서 줄일수 있다.
return answer;
2023-02-01 23:44:34 +09:00
}
}