-
[JAVA 백준 문제풀이] 얼렁뚱땅 18258 큐2 풀이얼렁뚱땅 JAVA 문제풀이 2023. 3. 3. 14:20
https://www.acmicpc.net/problem/18258
18258번: 큐 2
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
### 시간초과 ###
import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); Deque<String> dq = new LinkedList<String>(); for(int i=0;i<n;i++) { String [] str = br.readLine().split(" "); if (str[0].equals("push")) { dq.add(str[1]); } else if(str[0].equals("front")) { if(dq.isEmpty()) { System.out.println(-1); } else { System.out.println(dq.getFirst()); } } else if(str[0].equals("pop")) { if(dq.isEmpty()) { System.out.println(-1); } else { System.out.println(dq.pop()); } } else if(str[0].equals("size")) { System.out.println(dq.size()); } else if(str[0].equals("empty")) { if(dq.isEmpty()) { System.out.println(1); } else { System.out.println(0); } } else if(str[0].equals("back")) { if(dq.isEmpty()) { System.out.println(-1); } else { System.out.println(dq.getLast()); } } } } }
## 정답 ##
StringBuilder를 사용하여, 출력 할 곳을 sb에 모아주고 한방에 출력해야지만
시간초과가 뜨지 않음
import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); Deque<String> dq = new LinkedList<String>(); for(int i=0;i<n;i++) { String [] str = br.readLine().split(" "); if (str[0].equals("push")) { dq.add(str[1]); } else if(str[0].equals("front")) { if(dq.isEmpty()) { sb.append(-1).append("\n"); } else { sb.append(dq.getFirst()).append("\n"); } } else if(str[0].equals("pop")) { if(dq.isEmpty()) { sb.append(-1).append("\n"); } else { sb.append(dq.pop()).append("\n"); } } else if(str[0].equals("size")) { sb.append(dq.size()).append("\n");; } else if(str[0].equals("empty")) { if(dq.isEmpty()) { sb.append(1).append("\n");; } else { sb.append(0).append("\n");; } } else if(str[0].equals("back")) { if(dq.isEmpty()) { sb.append(-1).append("\n"); } else { sb.append(dq.getLast()).append("\n"); } } } System.out.println(sb); } }
'얼렁뚱땅 JAVA 문제풀이' 카테고리의 다른 글
[JAVA 백준 문제풀이] 얼렁뚱땅 1717번 집합의 표현 풀이 (0) 2023.03.29 [JAVA 백준 문제풀이] 얼렁뚱땅 9012 괄호 풀이 (0) 2023.03.03 [JAVA] 전위순회로 사칙연산 계산하기 (0) 2023.03.02 [JAVA] 얼렁뚱땅 중위순회 풀이 (0) 2023.03.02 [JAVA 백준 문제풀이] 얼렁뚱땅 20546 기적의 매매법 풀이 (0) 2023.02.27