Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- MySQL
- java
- Spring
- 자바백엔드
- Flutter
- 코딩테스트
- F-Lab
- 부트캠프
- redis
- AWS
- 레디스
- 로드밸런서
- 트러블슈팅
- 알고리즘
- nGrinder
- 플러터
- github
- 백엔드
- 후기
- error
- FLAB
- EC2
- 멘토링
- 에프랩
- 데이터구조
- backend
- grafana
- 자바
- 도커
- 성능테스트
Archives
- Today
- Total
민스씨의 일취일장
Java | 백준 10866 덱 본문
반응형
백준 10866 덱 문제에 대한글입니다.
백준 10866 덱
문제
문제 정보는 아래 링크에서 확인할 수 있다.
풀이
입력값을 Switch문으로 분별해 적절한 수행을 해주면 된다.
특징
덱(Deque)를 선언하고 사용할 주 안다면 아주 쉬운 문제이다. 반대로 사용법을 잘 모른다면 덱을 연습하기 좋은 문제이다.
전체 코드
public class backjoon10866 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static int N;
static void input() throws IOException {
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
}
static void execute() throws IOException{
Deque<Integer> dq = new ArrayDeque<>();
for(int i=0; i<N; i++){
st = new StringTokenizer(br.readLine());
String str = st.nextToken();
switch (str){
case "push_front" :
int frontNum = Integer.parseInt(st.nextToken());
dq.addFirst(frontNum);
break;
case "push_back" :
int backNum = Integer.parseInt(st.nextToken());
dq.addLast(backNum);
break;
case "pop_front" :
if(dq.size()>0){
System.out.println(dq.getFirst());
dq.removeFirst();
} else {
System.out.println(-1);
}
break;
case "pop_back" :
if(dq.size()>0){
System.out.println(dq.getLast());
dq.removeLast();
} else {
System.out.println(-1);
}
break;
case "size" :
System.out.println(dq.size());
break;
case "empty" :
if(dq.isEmpty()){
System.out.println(1);
} else {
System.out.println(0);
}
break;
case "front" :
if(dq.size()>0){
System.out.println(dq.peekFirst());
} else {
System.out.println(-1);
}
break;
case "back" :
if(dq.size()>0){
System.out.println(dq.peekLast());
} else {
System.out.println(-1);
}
break;
}
}
}
public static void main(String[] args) throws IOException{
input();
execute();
}
}
소감
8개월 전에 알고리즘 문제풀이를 시작한 지 얼마 안 됐을 때도 풀었던 문제이다. 그 당시 고민을 아주 많이 하고 풀었던 기억이 난다. 그 전의 코드를 살펴보니, 많이 복잡하게 구현했다고 느끼는 부분들이 있었다. 반대로 지금 그때에 비해서 많이 발전했구나란 생각이 들어 기분이 좋다.
Deque를 자주 사용하면 괜찮은데, 매번 어떻게 선언했느지 기억이 나지 않는다. 이번 기회에 뇌에 새길 수 있도록 해야겠다.
Deque<Type> name = new ArrayDeque<>();
728x90
반응형