✔ 난이도 - Silver 4

백준 알고리즘은 큐로 분류되어있지만 덱으로 풀었다
https://velog.io/@seha01130/JAVA-덱Deque-정리
큐에 대해 정리한건 https://velog.io/@seha01130/JAVA-큐Queue-메소드-정리 여기를 참조
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Deque<Integer> deque = new ArrayDeque<>();
// String str = br.readLine();
// int N = Integer.parseInt(str.charAt(0) + "");
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++){
deque.addLast(i + 1);
}
// System.out.println(deque);
sb.append("<");
int count = 1;
while (!deque.isEmpty()){
if (count < K){
deque.addLast(deque.removeFirst());
count++;
} else {
sb.append(deque.removeFirst());
count = 1;
if (!deque.isEmpty()){
sb.append(", ");
}
}
}
sb.append(">");
System.out.println(sb);
}
}
📌 String형에서 문자 가져오기
StringBuilder sb = new StringBuilder();
String str = br.readLine();
int N = Integer.parseInt(str[0]);
여기서 왜 str[0] 으로 문자 하나를 가져올 수 없을까?
String은 문자들의 묶음이지만, 엄밀히 말하면 배열이 아니고 객체이기 때문에 배열처럼 접근할 수는 없다.
따라서 문자 하나를 가져오고싶다면 charAt(int index) 메서드를 사용해야한다.
StringBuilder sb = new StringBuilder();
String str = br.readLine(); //7 3 입력함.
int N = Integer.parseInt(str.charAt(0) + ""); // 7
int K = Integer.parseInt(str.charAt(2) + ""); // 3
System.out.println(N + K); // 10
System.out.println(N + " " + K); // 7 3
또는
StringBuilder sb = new StringBuilder();
String str = br.readLine();
char ch = str.charAt(0);
int N = ch - '0'; // 문자를 숫자로 변환
여기서 str.charAt(0)
+ ""이걸 해주는 이유는 str.charAt(0)의 타입은 char형이다. 그런데 Integer.parseInt() 메서드는 String형 타입을 받아서 int형으로 변환해주는 메서드이기때문에 꼭 String형이 들어와야한다!
그래서 str.charAt(0) + "" 이렇게 "문자 + 빈 문자열"을 하면, char가 자동으로 String으로 변환이 됨!
만약 char가 딱 '숫자' 문자라면, 굳이 + "" 안 하고 이렇게 바로 변환하는 방법도 있다.
int N = str.charAt(0) - '0';
'5' - '0' = 5
'8' - '0' = 8
코테 같은 데서 시간 아낄 때 이 방법을 애용하면 좋을듯!

