728x90
안녕하세요 뚜디 입니다 :)
코딩테스트 연습 - 올바른 괄호 | 프로그래머스 (programmers.co.kr)
< 프로그래머스 - 올바른 괄호 (lv2) >
1. 연습 문제
2. 문제 풀이
3. 소스 코드
4. 결과
1. 연습 문제
※ 문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
※ 제한 조건
문자열 s의 길이 : 100,000 이하의 자연수
문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
※ 입출력 예
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
2. 문제 풀이
1. 문자열 s의 인덱스0번째 인자 값으로는 '(' 만 올 수 있다.
2. 반복문을 진행하여 '(', ')' 괄호가 정상적으로 위치해있는지 판단할 수 있다.
=> 이때 '(' = 1, ')' = -1 로 판단하였다.
3. 반복문이 끝났을때, flag 변수의 값이 0이 아닐경우 false를 리턴한다.
-------------------------------------------------------------------------
그냥 생각나는데로 소스코드 작업을해서 소스코드가 깔끔하지는 않네요....ㅎㅅㅎ
3. 소스 코드
#include <string>
#include <iostream>
using namespace std;
bool solution(string s)
{
int flag = 0;
if (s[0] == ')') {
return false;
}
for (int i = 0; i < s.length(); i++) {
if (s[i] == '(') {
flag += 1;
} else {
flag -= 1;
}
if (flag < 0) {
return false;
}
}
if (flag != 0) {
return false;
}
return true;
}
4. 결과
728x90
'Programmers > C++' 카테고리의 다른 글
[C++] 프로그래머스 :: 쿼드압축 후 개수 세기 (0) | 2021.10.28 |
---|---|
[C++] 프로그래머스 :: 가장 큰 정사각형 찾기 (0) | 2021.10.27 |
[C++] 프로그래머스 :: 다음 큰 숫자 (0) | 2021.10.21 |
[C++] 프로그래머스 :: 땅따먹기 (0) | 2021.10.17 |
[C++] 프로그래머스 :: 숫자의 표현 (0) | 2021.10.16 |