https://www.acmicpc.net/problem/11866
- 난이도 : 실버4
- 구현 언어 : 자바
- 소요시간 : 30분
- 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
public class Josephus {
public static void main(String[] args) throws IOException {
//첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) ex)7 3
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String inputVal = bf.readLine();
int cnt = Integer.parseInt(inputVal.split(" ")[0]);
int target = Integer.parseInt(inputVal.split(" ")[1]);
ArrayDeque<Integer> arr = new ArrayDeque<Integer>();
for (int i = 1; i <= cnt; i++) {
arr.addLast(i);
}
String output = "<";
while(!arr.isEmpty()) {
for (int i = 0; i < target-1; i++) {
int temp = arr.pop();
arr.addLast(temp);
}
output += arr.pop() + ", ";
}
int len = output.length();
output = output.substring(0, len-2); // 맨 마지막 ", " 삭제
output += ">";
System.out.print(output);
}
}
문법
String.substring(0, len-2) : 0번 인덱스 ~ String의 뒤에서 3번째 인덱스까지
1. substr(a,b) : a는 시작위치, b는 길이
a번째 부터 b길이 만큼만 잘라내어 표시
2. substring(a,b) : a는 시작위치, b는 종료위치
a번째부터 b번째 전까지 잘라내어 포시
==========================================================================
- StringTokenizer 사용
- StringBuilder 사용
- 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.StringTokenizer;
public class Josephus_11866 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer inputVal = new StringTokenizer(br.readLine());
int cnt = Integer.parseInt(inputVal.nextToken());
int target = Integer.parseInt(inputVal.nextToken());
ArrayDeque<Integer> arr = new ArrayDeque<Integer>();
for (int i = 1; i <= cnt; i++) {
arr.addLast(i);
}
StringBuilder sb = new StringBuilder("<");
while(!arr.isEmpty()) {
for (int i = 0; i < target-1; i++) {
int temp = arr.pop();
arr.addLast(temp);
}
sb.append(arr.pop() + ", ");
}
int len = sb.length();
sb = sb.delete(len-2, len); //마지막 ", " 삭제
sb.append(">");
System.out.print(sb);
br.close();
}
}
'프로그래밍 > Algorithm' 카테고리의 다른 글
[백준 2947] 나무 조각 - 자바 (0) | 2022.06.05 |
---|---|
[백준 1874] 스택수열 - 자바 (0) | 2022.05.26 |
[백준 10828] 스택 - 자바 (0) | 2022.05.23 |
[백준 11637] 인기 투표 - 자바 (0) | 2022.05.23 |
[백준 11721] 열 개씩 끊어 출력하기 - 자바 (0) | 2022.05.23 |