코테/백준
[백준/JAVA] 3986번: 좋은 단어
imname1am
2023. 9. 5. 17:12
반응형
🔺 문제
3986번: 좋은 단어
이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에
www.acmicpc.net
🔺 코드
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
32
33
34
35
36
37
38
39
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int cnt = 0;
for(int i = 0 ; i < N ; i++) {
char[] arr = br.readLine().toCharArray();
if(solve(arr)) cnt++;
}
System.out.println(cnt);
}
private static boolean solve(char[] ch) {
Stack<Character> stack = new Stack<>();
for(int j = 0 ; j < ch.length ; j++) {
if(stack.isEmpty()) {
stack.push(ch[j]);
}
else {
if(stack.peek() == ch[j]) {
stack.pop();
}
else {
stack.push(ch[j]);
}
}
}
return stack.isEmpty() ? true : false;
}
}
|
cs |
✅ 해결 아이디어
✔ 스택
- 스택이 비어있으면, 문자 삽입
- 스택이 비어있지 않으면, 스택의 최상단 원소와 현재 문자 값 비교
└ 스택 최상단 원소 = 현재 문자값 ⇨ 최상단 원소 제거 (pop())
└ 스택 최상단 원소 ≠ 현재 문자값 ⇨ 스택에 원소 추가
🔺 다른 풀이들
- 많이들 조건문을 이렇게 처리하셨다. (참고)
for(int j = 0 ; j < str.length() ; j++) {
if(!stack.isEmpty() && str.charAt(j) == stack.peek())
stack.pop();
else
stack.push(str.charAt(j));
}
💬 느낀 점
오랜만에 스택 문제 푸니까 머리 안 아프고 재밌다ㅠㅠㅠㅠ
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
반응형