Open somdaa opened 6 years ago
import java.util.LinkedList; import java.util.Scanner;
/*
조세퍼스 순열 문제 */ public class Solution_1158 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt()-1;
LinkedList<Integer> list = new LinkedList<>();
for(int i=1; i<=n; i++) {
list.add(i);
}
int pre = 0;
int index = 0;
System.out.print("<");
while(list.size() > 1) { //마지막 한 노드 남을 때까지
if(list.size() > (m+pre)) { //m이 리스트의 크기보다 작을 때
index = m + pre;
System.out.print(list.remove(index)+", "); //인덱스는 m에서 1뺀 값
}else {
index = (m+pre) % list.size(); //리스트의 크기보다 m이 크기때문에 m을 리스트의 크기로 나눈 나머지 값을 구함
System.out.print(list.remove(index)+", "); //인덱스는 i에서 1뺀 값
}
pre = index;
}
System.out.print(list.getFirst()+">");
} }
import java.util.LinkedList; import java.util.Scanner;
public class JosephusProblem {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s=new Scanner(System.in);
int n=s.nextInt();
int m=s.nextInt();
LinkedList<Object> list= new LinkedList<Object>();
StringBuffer sb=new StringBuffer("<");
for(int i=n;i>0;i--){
list.addFirst(i);
}
while(list.size()!=1){
for(int i=0;i<m-1;i++){
Object result=list.removeFirst();
list.addLast(result);
}
sb.append(list.removeFirst()+", ");
}
sb.append(list.removeFirst()+">");
System.out.println(sb.toString());
}
}
https://www.acmicpc.net/problem/1158