프로그래머스 42585 - 쇠막대기
생각과 접근
- 쇠막대기 문제는 문제의 길이는 짧지만 고민을 정말 많이 해야하는 문제였습니다.
- 위와 같은 경우를 깊게 고민해보았습니다.
- 괄호를 열 경우는 딱히 나뉘는 케이스가 떠오르지 않았습니다.
- 괄호를 닫을 경우 두가지 케이스로 나뉩니다.
- 첫 번째 : 레이저인 경우
- 레이저일 경우, 열려있던 괄호만큼 answer를 더해주면 됩니다. (잘린 쇠 파이프 갯수!)
- 두 번째 : 쇠막대기가 끝나는 경우
- 쇠막대기가 끝나는 경우, 새로운 쇠막대기가 단 하나 생깁니다.
- 쇠막대기가 끝나는 경우, 새로운 쇠막대기가 단 하나 생깁니다.
- 첫 번째 : 레이저인 경우
- 빨간 원이 레이저일 때 더해주는 경우, 파란 원이 쇠막대기가 끝나는 경우입니다.
코드
#include <bits/stdc++.h>
using namespace std;
int solution(string arrangement) {
int answer = 0;
stack<int> s;
for(int i = 0; arrangement[i] != '\0'; i++){
if(arrangement[i] == '(') s.push(1);
else if(arrangement[i] == ')'){
s.pop();
if(arrangement[i - 1] == '(') answer += s.size();
else if(arrangement[i - 1] == ')') answer++;
}
}
return answer;
}
채점 결과
'Coding Test > programmers' 카테고리의 다른 글
프로그래머스 42586 - 기능개발 (c++) (0) | 2020.07.28 |
---|---|
프로그래머스 42584 - 주식가격 (c++) (0) | 2020.07.28 |
프로그래머스 42588 - 탑 (c++) (0) | 2020.07.27 |
프로그래머스 42579 - 베스트앨범 (c++) (0) | 2020.07.27 |
프로그래머스 42578 - 위장 (c++) (0) | 2020.07.27 |