-
[코테] 자료구조 - 덱 메서드 정리알고리즘/코테 2024. 10. 2. 22:32
스택과 큐 클래스는 이제 자바에서 레거시가 되었다.
대신 자바에서 스택과 큐를 한번에 사용하기위한 목적으로 덱을 쓴다.
Deque<Integer> deque = new ArrayDeque<>(); // 덱 생성 addFirst() // 맨 앞에 요소를 추가 (스택의 push) addLast() // 맨 뒤에 요소를 추가합니다. offerFirst() // 맨 앞에 요소를 추가(가득 찼을 때 예외 발생 안 함), 안전한 추가 보장 offerLast() // 맨 뒤에 요소를 추가합니다 (가득 찼을 때 예외 발생 안 함). removeFirst() // 맨 앞 요소를 제거하고 반환합니다.(없으면 에러반환) (스택의 pop) removeLast() // 맨 뒤 요소를 제거하고 반환합니다.(없으면 에러반환) pollFirst() // 맨 앞의 요소를 제거하고 반환합니다 (비어 있으면 null 반환), 안전한 삭제 보장 pollLast() // 맨 뒤의 요소를 제거하고 반환합니다 (비어 있으면 null 반환), 안전한 삭제 보장 peekFirst() // 맨 앞의 요소를 반환하지만 제거하지 않음 (비어 있으면 null). peekLast() // 맨 뒤의 요소를 반환하지만 제거하지 않음 (비어 있으면 null). size() // Deque 크기 반환. isEmpty() // 비어있는지 확인 clear() // 덱 모든 요소 제거 contains() // 해당요소 존재하는지 확인 iterator() // Deque의 요소에 대한 Iterator를 반환합 toArray() // 모든 요소 배열로 변환
스택 문제 예제)
1. 올바른 괄호 문제설명
괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.
입력
첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.
출력
첫 번째 줄에 YES, NO를 출력한다.
예시 입력 1
(()(()))(()
예시 출력 1
NO
코드)
Deque를 이용해 풀기
Stack의 push() -> Deque의 addFirst()로 대체
Stack의 pop() -> Deque의 removeFirst()로 대체
Scanner sc = new Scanner(System.in); String str = sc.nextLine(); ArrayDeque<String> dq = new ArrayDeque<>(); String answer = "YES"; for(char ch: str.toCharArray()){ if(ch=='('){ dq.addFirst("("); } else{ if(dq.isEmpty()){ answer = "NO"; break; } dq.removeFirst(); } } if(!dq.isEmpty()){ answer = "NO"; } System.out.print(answer);
'알고리즘 > 코테' 카테고리의 다른 글
[코테] java-중복된 문자 제거하기 (0) 2024.10.28 [TIL] 아스키코드로 대소문자 변환하기 (0) 2024.10.25 [코테] 자료구조5 - HashMap, HashSet 사용하기 (0) 2024.10.05 [코테] java 우선순위큐 (0) 2024.09.20 [코테] java 문자열(String / StringBuilder) 다루는 메서드 정리 (1) 2024.09.18