문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42585
C++ 풀이
#include <string>
#include <vector>
using namespace std;
int solution(string arrangement) {
int answer = 0; //쇠막대기 수 + 커팅 횟수
int currentStickN = 0; //레이저가 자르게 될 쇠막대기 개수
for (int i = 0; i < arrangement.length() - 1; i++) {
if (arrangement[i] == '(') {
if (arrangement[i + 1] == ')') { //레이저인 경우
answer += currentStickN;
}
else { //쇠막대기 시작 위치인 경우
answer++;
currentStickN++;
}
}
else if ((arrangement[i] == ')') && (arrangement[i - 1] == ')')) { //쇠막대기 끝나는 위치인 경우
currentStickN--;
}
}
return answer;
}
왼쪽부터 차례대로 문자열을 읽으며, 레이저가 나올 때마다 현재 놓여진 막대기 개수를 더하도록 구현하였다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[프로그래머스] 호텔 방 배정 (0) | 2020.04.21 |
---|---|
[프로그래머스] 주식가격 (0) | 2020.04.17 |
[프로그래머스] 디스크 컨트롤러 (0) | 2020.04.07 |
[프로그래머스] N개의 최소공배수 (0) | 2020.04.03 |
[프로그래머스] 최댓값과 최솟값 (0) | 2020.04.03 |