🟦/백준

[골드 5] AC

진뚱이용 2023. 5. 27. 23:48

https://www.acmicpc.net/problem/5430

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

22:53~23:24 31분 걸림

 

String command = br.readLine();

int n = Integer.parseInt(br.readLine());

String line = br.readLine();
line = line.substring(1,line.length()-1);
String[] number = line.split(",");

Deque<Integer> deque = new ArrayDeque<>();
for (int i = 0; i < n; i++){
    deque.addLast(Integer.parseInt(number[i]));
}

1.

int [] arr 하려다가 뒤집기 힘들 것 같아서 deque + head로 바꿈

2.

[10,20,30,40]인 케이스를 고려하지 않고

line.charAt(1);

line.chatAt(3); 이런 식으로 뽑아버림

 

boolean head = true;
boolean stop = false;
for (int i = 0; i < command.length(); i++) {
    if (command.charAt(i) == 'R') {
        if (head)
            head = false;
        else
            head = true;
    } else {
        if (deque.isEmpty()) {
            stop = true;
            break;
        }
        if (head)
            deque.removeFirst();
        else
            deque.removeLast();
    }
}

무난한 R D 작업

    if (stop)
        sb.append("error\n");
    else {
        int size = deque.size();
        sb.append("[");
        if (head) {
            for (int i = 0; i < size; i++) {
                sb.append(deque.removeFirst() + ",");
            }
        } else {
            for (int i = 0; i < size; i++) {
                sb.append(deque.removeLast() + ",");
            }
        }
        if (sb.charAt(sb.length()-1)==',')
            sb.deleteCharAt(sb.length() - 1);
        sb.append("]\n");
    }
}

[1,2,]

마지막 숫자뒤에도 , 가 붙어버림

지우는 작업 필요

if (sb.charAt(sb.length()-1)==',')
    sb.deleteCharAt(sb.length() - 1);