[JAVA 문제 풀이] 383. 줄 서는 방법

프로그래머스 (12936)
Stupefyee's avatar
Jul 17, 2025
[JAVA 문제 풀이] 383. 줄 서는 방법
notion image
 

내가 작성한 코드

import java.util.*; class Solution { public int[] solution(int n, long k) { int[] answer = new int[n]; // 최종 결과를 담을 배열 List<Integer> people = new ArrayList<>(); // 선택 가능한 숫자들을 담는 리스트 long factorial = 1; // 팩토리얼을 계산하기 위한 변수 // 1부터 n까지 숫자를 리스트에 추가하고 팩토리얼 계산 for (int i = 1; i <= n; i++) { people.add(i); factorial *= i; // 팩토리얼 계산 } k -= 1; // k는 1부터 시작하므로 index로 변경 factorial /= n; // 첫 자리 기준으로는 (n-1)!로 시작 // 순열의 각 자리수에 대해 값을 결정 for (int i = 0; i < n; i++) { int index = (int) (k / factorial); // 현재 자리의 인덱스 계산 answer[i] = people.get(index); // 해당 인덱스의 값을 결과에 저장 people.remove(index); // 사용한 숫자는 리스트에서 제거 k = k % factorial; // 다음 자리 기준으로 k를 갱신 if (n - i - 1 > 0) { // 남은 자리가 있다면 factorial /= (n - i - 1); // 다음 자리 기준 (n-i-2)!로 갱신 } } return answer; // 최종 k번째 순열 반환 } }
Share article

stupefyee