• 문제 링크
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
• 풀이 과정
입력받은 테스트 케이스 수 t 만큼 함수 p 와 배열의 크기 n 을 입력받고
해당 배열의 정수를 StringTokenizer 구분자를 "[]," 로 지정하여 입력받아 Deque 에 offer 한다.
함수 R 을 수행 할 시, boolean 변수 reverse 의 논리값을 변환하며,
reverse = true 일 경우 덱에서 removeLast 를 통해 덱의 뒤에서부터 원소를 추출하며
그렇지 않을 경우 removeFirst 로 덱의 앞에서 부터 원소를 추출한다.
만약 추출 시 덱에 원소가 남아있지 않을 경우 "error" 를 반환한다.
출력 문자열을 반환하기 위하여 StringBuilder 를 활용할 시에도
위와 같이 reverse 변수값에 따라 덱에서 값을 추출하여 append 하여 각 테스트 케이스의 정답으로써 반환한다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int t = Integer.parseInt(br.readLine());
Deque<Integer> dq = new LinkedList<>();
while (t-- > 0) {
String p = br.readLine();
int n = Integer.parseInt(br.readLine());
dq.clear();
st = new StringTokenizer(br.readLine(), "[],");
for (int i = 0; i < n; i++)
dq.offer(Integer.parseInt(st.nextToken()));
bw.write(ac(dq, p));
}
bw.flush();
}
private static String ac(Deque<Integer> dq, String p) {
boolean reverse = false;
for (char comm : p.toCharArray()) {
if (comm == 'R')
reverse = !reverse;
else {
if (dq.isEmpty())
return "error\n";
if (reverse)
dq.removeLast();
else
dq.removeFirst();
}
}
StringBuilder sb = new StringBuilder("[");
while (!dq.isEmpty()) {
sb.append(reverse ? dq.removeLast() : dq.removeFirst());
if (!dq.isEmpty())
sb.append(',');
}
sb.append("]\n");
return sb.toString();
}
}'Problem Solving > Baekjoon' 카테고리의 다른 글
| [백준] 1904 01타일 - Dynamic Programming / Java (0) | 2022.11.07 |
|---|---|
| [백준] 9184 신나는 함수 실행 - Dynamic Programming / Java (0) | 2022.11.06 |
| [백준] 1021 회전하는 큐 - Data Structure / Java (0) | 2022.11.04 |
| [백준] 15828 Router - Data Structure / Java (0) | 2022.11.03 |
| [백준] 4949 균형잡힌 세상 - Data Structure / Java (0) | 2022.11.02 |
댓글