inblog logo
|
stupefyee
    알고리즘문제풀기

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

    프로그래머스 (12936)
    Stupefyee's avatar
    Stupefyee
    Jul 17, 2025
    [JAVA 문제 풀이] 383. 줄 서는 방법
    Contents
    내가 작성한 코드
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/12936
    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
    Contents
    내가 작성한 코드

    stupefyee

    RSS·Powered by Inblog