일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 텐션 업 10기!
- SSAFY 화이팅
- Java 환경 설정
- HAVE A GOOD DAY
- SSAFY IM/A
- 모르고리즘
- 자고 싶다
- Hamming weight
- have a nice day
- DFS
- 네트워크
- 우유아야
- LeetCode #릿코드 #좋은 하루 되세요 #Have a nice day
- SeongSeobDang
- SSAFY 10기 화이팅
- I am Korean
- 아자아자 화이팅
- 우유가옆으로넘어지면아야
- DP
- 우유가 옆으로 넘어지면 아야
- amazon
- 텐션 업 10기 화이팅
- Have a good day :)
- 코로나 싫어요
- Have a nice day.
- 자료구조
- BFS
- SSAFY 테스트
- 수학
- Today
- Total
Hope Everyone Is Happy
[골드5] 5430. AC (Java) 본문
https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
에이씨,,,
※ 문제를 요약하면 아래와 같습니다.
▶ 새로운 언어 AC는 정수 배열 연산을 하기위해 선영님이 만든 언어
▶ R은 배열에 있는 수의 순서를 반대로 설정
▶ D는 배열에서 첫번째 수를 버리는 함수
▶ 비어있는 배열에서 D 진행시 에러 출력
▶ 배열과 AC언어가 주어졌을 때 결과 출력
▶ Input : 첫째 줄에 테스트 케이스 T
: 각 테스트 케이스 별 첫번째 줄은 AC언어 (R과D로 구성)
: 배열의 갯수
: 배열의 갯수 만큼 배열 원소 입력
▶ Output : 결과 배열 or error 출력
◈ Input - 1
4
RDD
4
[1,2,3,4]
DD
1
[42]
RRD
6
[1,1,2,3,5,8]
D
0
[]
◈ Output - 1
[2,1]
error
[1,2,3,5,8]
error
◎ 코드 작성 전, 아래와 같이 솔루션을 정리하였습니다.
▶ 배열의 원소는 [ ~, ~, ...] 형태로 입력 되므로 구분하여 덱(Deque)구조로 저장
▶ 앞에서 부터 삭제 및 조회, 뒤에서 부터 삭제 및 조회를 보다 편하게 하기 위해 덱 구조 사용
▶ 'R' 입력 여부를 boolean 변수로 저장
▶ 'D' 입력 시 덱의 맨 앞 out 'R'상태일 경우 덱의 맨 뒤out, 배열이 비어있을 경우 error 출력
▶ 연산 종료 후 'R'상태 체크하여 맨 앞 or 맨 뒤 부터 순서대로 배열을 출력 ( 공백일 경우 '[]' 출력 )
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
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 Main {
static int N, M;
static int[] narr;
static boolean[] barrVisited;
public static void main(String[] args) throws IOException {
BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(System.out));
int nTestcase = Integer.parseInt(bReader.readLine());
for (int t = 1; t <= nTestcase; t++) {
Deque<Integer> dequeAC = new ArrayDeque<>();
boolean bReverse = false;
String strAC = bReader.readLine();
int nSize = Integer.parseInt(bReader.readLine());
// 쉼표 구분자로 나눠 받기
StringTokenizer strArr = null;
strArr = new StringTokenizer(bReader.readLine(), ",");
// 처음과 끝에 대괄호 지워줘
String strTemp;
for (int i = 0; i < nSize; i++) {
strTemp = strArr.nextToken();
if (i == 0 || i == nSize - 1) {
strTemp = strTemp.replace("[", "");
strTemp = strTemp.replace("]", "");
}
// 덱에 넣어줘
dequeAC.add(Integer.parseInt(strTemp));
}
boolean bError = false;
for (int i = 0; i < strAC.length(); i++) {
if (strAC.charAt(i) == 'R')
bReverse = !bReverse;
else if (strAC.charAt(i) == 'D') {
if (dequeAC.isEmpty()) {
bWriter.write("error");
bError = true;
break;
}
if (!bReverse)
dequeAC.pollFirst();
else
dequeAC.pollLast();
}
}
int nDequeSize = dequeAC.size();
if (!bError) {
bWriter.write("[");
if (!bReverse) {
for (int i = 0; i < nDequeSize; i++) {
if (i == 0)
bWriter.write(String.valueOf(dequeAC.pollFirst()));
else
bWriter.write("," + dequeAC.pollFirst());
}
} else {
for (int i = 0; i < nDequeSize; i++) {
if (i == 0)
bWriter.write(String.valueOf(dequeAC.pollLast()));
else
bWriter.write("," + dequeAC.pollLast());
}
}
bWriter.write("]");
}
bWriter.write("\n");
}
bWriter.flush();
bWriter.close();
}
}
테스트 하려고 넣어논 코드를 계속 제출하다가 null 오류가 계속 떴네요.. ㅠㅠ 더 신중하게 풀겠습니다!!
Good Luck! (피드백 감사합니다!)
'※ 백준 (Baekjoon) > [Java] 문제 풀이 ( Solve the problems)' 카테고리의 다른 글
[골드4] 17298. 오큰수 (Java) (0) | 2023.09.10 |
---|---|
[골드5] 2493. 탑 (Java) (0) | 2023.09.09 |
[실버5] 11866. 요세푸스 문제 0 (Java) (0) | 2023.09.07 |
[실버1] 2841. 외계인의 기타 연주 (Java) (0) | 2023.09.06 |
[실버4] 1764. 듣보잡 (Java) (0) | 2023.08.30 |