반응형
🔺 문제
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 |
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 16987번: 계란으로 계란치기 (0) | 2023.09.06 |
---|---|
[백준/JAVA] 1448번: 삼각형 만들기 (0) | 2023.09.05 |
[백준/JAVA] 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2023.09.05 |
[백준/JAVA] 11000번: 강의실 배정 (0) | 2023.09.04 |
[백준/JAVA] 2847번: 게임을 만든 동준이 (0) | 2023.09.04 |