728x90
반응형
1. 큐 2(백준 18258번 문제)
▷ 풀이 코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Que2 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int n = Integer.parseInt(br.readLine()); int[] arr = new int[n]; int ft = 0; // front int rear = 0; for(int i=0; i<n; i++) { String[] input = br.readLine().split(" "); switch(input[0]) { case "front" : if(rear-ft == 0) sb.append("-1\n"); else sb.append(arr[ft] + "\n"); break; case "back": if(rear-ft == 0) sb.append("-1\n"); else sb.append(arr[rear - 1] + "\n"); break; case "pop" : if(rear-ft == 0) sb.append("-1\n"); else sb.append(arr[ft++] + "\n"); break; case "size" : sb.append(rear-ft + "\n"); break; case "empty" : if(rear-ft == 0) sb.append("1\n"); else sb.append("0\n"); break; default : if(input[0].substring(0, 4).equals("push")) { arr[rear++] = Integer.parseInt(input[1]); } break; } } System.out.print(sb.toString()); br.close(); } }
2. 카드2(백준 2164번 문제)
▷ 풀이 코드
import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class QueCard { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Queue<Integer> que = new LinkedList<Integer>(); int n; do { n = sc.nextInt(); } while(n < 1 || n > 500000); for(int i=0; i<n; i++) { que.add(i+1); } while(n > 1) { que.poll(); int a = que.poll(); que.add(a); n--; } System.out.println(que.poll()); } }
요즘 알고리즘 스터디를 통해 다양한 구조 및 내장 함수들을 배우고 있습니다!
이번에는 Queue라는 구조였는데 FIFO(FirstInFirstOut) 방식으로 처음 입력한 것을 먼저 내보내는 방식입니다!!
사용방법은 아래와 같습니다.
// 1. 큐 생성 Que<Integer> que = new LinkedList<Integer>(); // 2. add() or offer() 메소드를 이용해 저장 que.add(1); que.add(2); que.add(3); que.add(4); System.out.println(que); // 출력 : [1, 2, 3, 4] // 3. peek() 메소드를 이용해 처음 입력한 값 출력 System.out.println(que.peek()); // 출력 : 1 // 4. poll() 메소드를 이용한 값 출력 및 제거 System.out.println(que.poll()); System.out.println(que); // 출력 : 1 // 출력 : [2, 3, 4] // 5. remove() 메소드를 이용한 요소의 제거 // remove()만 사용하면 첫 번째 값 제거 que.remove(4); System.out.println(que); // 출력 : [2, 3] 6. clear()를 통해 queue 초기화 que.clear(); System.out.println(que); // 출력 : []
위의 방식은 코딩테스트할 때 많이 사용된다고 하네요~
이제 코딩 테스트도 준비해야할 때가 온 것 같아요!!!
다음 스터디때는 재귀에 대해서 공부해볼게요~
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
728x90
반응형
'문제풀기 > 알고리즘 스터디' 카테고리의 다른 글
[알고리즘] 정렬 문제 풀이(백준 2750번, 2751번, 10989번) (0) | 2023.06.07 |
---|---|
[알고리즘] 정렬 문제 풀이(백준 1181번, 1920번, 1427번) (0) | 2023.06.06 |
[알고리즘] 정렬 문제 풀이(백준 10817번, 11399번) (0) | 2023.06.05 |
[알고리즘] 재귀 문제 풀이(백준 27433번, 10870번, 25501번) (0) | 2023.05.14 |
[알고리즘] Stack 문제 풀이(백준 10773번, 10828번) (3) | 2023.05.04 |