개강은 했지만, 공강이라 천밥먹고 쉬다가 온라인 강의를 부셨다.
재즈의 이해, 핵심취업전략,, 앞으로 매주 화요일에 해야지..
저녁엔 sqld 준비용 프로그래머스 sql 문제 몇개와
백준 마라톤 문제인 6119 - Cow Line을 풀었다.
오랜만에 푸는만큼 StringTokenizer 사용법이 순간 헷갈렸었다.
무작정 nextToken()을 그대로 쓰는게 아니라 String이건 int건 변수에 저장을 해놓고 써야하는건데..
문제 자체는 Deque 자료구조를 사용해서
addFirst(), addLast(), removeFirst(), removeLast(), getFirst()를 이용하면 간단하게 풀렸다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class CowLine_6119 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int cowNum = 1;
Deque<Integer> d = new ArrayDeque<>();
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String command = st.nextToken();
if (command.equals("A")) {
String dir = st.nextToken();
if (dir.equals("L")) {
d.addFirst(cowNum);
cowNum++;
} else {
d.addLast(cowNum);
cowNum++;
}
} else {
String dir = st.nextToken();
if (dir.equals("L")) {
int cnt = Integer.parseInt(st.nextToken());
for (int j = 0; j < cnt; j++) {
d.removeFirst();
}
} else {
int cnt = Integer.parseInt(st.nextToken());
for (int j = 0; j < cnt; j++) {
d.removeLast();
}
}
}
}
int size = d.size();
for (int i = 0; i < size; i++) {
bw.write(d.getFirst() + "\n");
d.removeFirst();
}
bw.flush();
bw.close();
}
}
다시 스트릭도 쌓고 공부습관을 좀 길러봅시다!