- 오늘의 학습 키워드
쇠막대기
- 풀이
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
System.out.println(solution(input));
}
private static int solution(String input) {
int answer = 0;
Stack<Character> stack = new Stack<>();
stack.push(input.charAt(0));
for (int i = 1; i < input.length(); i++) {
if (input.charAt(i) == '(') { // (가 나오면 스택에 push
stack.push('(');
} else { // )가 나오면
stack.pop();
if (input.charAt(i - 1) == '(') {
// 1. 이전 문자가 (면 레이저니까 스택에 쌓인 만큼 조각 수 +
answer += stack.size();
} else {
// 2. 이전 문자가 )면 막대기 끝이니까 조각 추가 후 스택에서 pop
answer += 1;
}
}
}
return answer;
}
}
- 오늘의 회고
이 문제는 풀었던 거였는데 또 나왔다. 그치만 좀 방황했음 ㅎㅎ
- '('를 만나면 stack에 '('을 push한다.
- ')'를 만났을 경우에는 stack에서 pop을 한다.
- 만약 ')' 바로 전 문자가 '('이었다면, 그것은 레이저를 의미하므로 answer에 stack의 사이즈만큼 더한다.
- 만약 ')' 바로 전 문자가 ')'이었다면, 그것은 단순히 닫힌 문자열이므로 answer에 +1을 한다.
(문제의 그림을 보면 알 수 있듯이, 단순한 닫힌 괄호는 하나의 막대 조각을 가리키게 된다.)
'📝 끄적끄적 > 항해99 코테 스터디' 카테고리의 다른 글
99클럽 코테 스터디 10일차 TIL + 병든 나이트 (0) | 2025.04.12 |
---|---|
99클럽 코테 스터디 9일차 TIL + 저울 (0) | 2025.04.10 |
99클럽 코테 스터디 8일차 TIL + 한국이 그리울 땐 서버에 접속하지 (0) | 2025.04.10 |
99클럽 코테 스터디 6일차 TIL + 섬의 개수 (0) | 2025.04.08 |
99클럽 코테 스터디 2일차 TIL + 피보나치 비스무리한 수열 (0) | 2025.04.02 |
99클럽 코테 스터디 1일차 TIL + 소수 구하기 (0) | 2025.04.01 |