문제 출처
1. 문제설명
- 두 가지 연산이 있다.
R
: 배열에 있는 수의 순서를 뒤집는 함수
D
: 배열의 첫 번째 수를 버리는 함수
- 배열의 초기값과 수행할 함수가 주어졌을 때 최종 결과를 구하라.
- 단, 원소가 없는데
D
를 사용하는 경우 error를 출력하라
2. 알고리즘 설계
- 처음 시도는
R
기능을 reverse
로 구현하였다.
- 따라서
R
이 사용되면, 배열의 뒤부터 값을 제거/출력하고,
- 다시
R
이 사용되면, 배열의 앞부터 값을 제거/출력한다.
3. 로직
- 가장 적절한 자료구조는
deque
이다.
- 특정 부울 변수를 둬서
R
이 사용되면 부울 변수를 역으로 취한다.
- 이렇게 하면
reverse
를 커버칠 수 있다.
4. 전체 코드
5. 소감
- 문자열 처리가 극악인 문제였다.
- 입력이
[1,2,3,4]
형태로 들어온다.
- 출력은
[1,2,3,4]
의 형태이다.
- 비어있는 배열에 뒤집는 연산은 상관없지만, 제거하는 것만 문제가 된다.
chk = !chk;
- 다른 사람 코드를 보면,
if-else
로 처리한 경우가 많았다.
- 저렇게 하면
true
일 땐, false
가 되어 깔끔하게 처리가 가능하다.