1158번 - 요세푸스 문제
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
// N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
ArrayList A = new ArrayList();
for(int i = 0; i < N; i++) {
A.add(i+1);
}
int index = 0;
System.out.print("<");
while(A.size() != 0) {
if(index == K-1) {
if(A.size() == 1) {
System.out.print(A.get(0) + ">");
A.remove(0);
}else {
System.out.print(A.get(0)+ ", ");
index = 0;
int num = A.get(0);
A.add(num);
index++;
sc.close();
어레이 리스트에 값들을 순서대로 저장하고,
K 번째나오기전까지 리스트 뒤로 넘기고
K 번째가 나오면 꺼내는 식으로 코드를 구성해봤는데요
시간초과가 떠서 ㅠ ㅠ 어떻게 해결해야 할까요
댓글을 작성하려면 로그인해야 합니다.
lkm9709 3년 전
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
// N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
ArrayList A = new ArrayList();
for(int i = 0; i < N; i++) {
A.add(i+1);
}
int index = 0;
System.out.print("<");
while(A.size() != 0) {
if(index == K-1) {
if(A.size() == 1) {
System.out.print(A.get(0) + ">");
A.remove(0);
}else {
System.out.print(A.get(0)+ ", ");
A.remove(0);
index = 0;
}
}else {
int num = A.get(0);
A.remove(0);
A.add(num);
index++;
}
}
sc.close();
}
}
어레이 리스트에 값들을 순서대로 저장하고,
K 번째나오기전까지 리스트 뒤로 넘기고
K 번째가 나오면 꺼내는 식으로 코드를 구성해봤는데요
시간초과가 떠서 ㅠ ㅠ 어떻게 해결해야 할까요