티스토리 뷰
programmers.co.kr/learn/courses/30/lessons/12909
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은
programmers.co.kr
⊙ 문제
⊙ 제한사항
⊙ 입출력 예
⊙ 입출력 예 설명
⊙ 문제 접근 과정
[백준(BOJ)] 9012번 : 괄호 - JAVA[자바]
www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올..
tooo1.tistory.com
백준에 있는 괄호 문제와 비슷한 유형이다.
오히려 더 쉽다.
여러 가지 방법으로 문제에 접근할 수 있다. 내가 떠올리고 접근한 건 2가지이다.
- 카운팅
- 스택
첫번째 문제 접근 : 카운팅
받은 괄호가 열린 괄호면 COUNT UP
닫힌 괄호면 COUNT DOWN
만약 카운트가 음수가 될 경우 바로 FALSE
마지막에는 카운트가 0으로 처음 상태와 동일할 시 TRUE
두번째 문제 접근 : 스택
받은 괄호가 열린 괄호면 PUSH
닫힌 괄호면 POP
만약 스택이 EMPTY 상태이면 FALSE
마지막에는 스택이 0으로 처음 상태와 동일할 시 TRUE
⊙ 문제 풀이
첫번째 문제 풀이 : 카운팅
#include <iostream>
#include <string>
using namespace std;
bool solution(string arr) {
int count =0 ;
for(int i = 0; i<arr.length();i++) {
if(arr[i]=='(') {
count++;
} else if (arr[i]==')') {
count--;
if(count<0) {
return false;
break;
}
}
}
if(count==0) {
return true;
} else {
return false;
}
}
위 코드를 프로그래머스에 제출했더니 아래와 같이 깔끔하게 코드가 정리되었다.
#include<string>
#include <iostream>
using namespace std;
bool solution(string s)
{
int data = 0;
for(int i = 0; i < s.length(); i++) {
if (s[i] == '(')
data++;
else if (s[i] == ')')
data--;
if (data < 0)
return false;
}
return data == 0;
}
두 번째 문제 풀이 : 스택
#include <iostream>
#include <string>
#include <stack>
using namespace std;
bool solution(string s)
{
stack<char> stk;
for (char& c : s) {
if (c == '(')
stk.push(c);
else {
if (stk.empty())
return false;
else
stk.pop();
}
}
return stk.empty();
}
⊙ 마무리
한 가지 문제를 보고 여러 가지 문제 접근방법이 생각나도록 경험치를 쌓자
'프로그래머스 > C++ [CPP]' 카테고리의 다른 글
[프로그래머스] 코딩테스트 연습 : 로또의 최고 순위와 최저 순위 - C++[CPP] (0) | 2021.08.09 |
---|---|
[프로그래머스] 코딩테스트 연습 : 내적 - C++[CPP] (0) | 2021.08.07 |
[프로그래머스] 코딩테스트 연습 : 부족한 금액 계산하기 - C++[CPP] (0) | 2021.08.07 |
[프로그래머스] 코딩테스트 연습 : 다단계 칫솔 판매 - C++[CPP] (1) | 2021.07.31 |
[프로그래머스] 코딩테스트 연습 : 최고의 집합 - C++[CPP] (0) | 2021.04.30 |
- Total
- Today
- Yesterday
- 문자열
- 자바스크립트
- 그리디
- 파이썬
- JS
- 알고리즘
- 정리
- CPP
- 정렬
- 자바
- 답
- py
- 쉽게배우는
- 백준
- Python
- 프로그래머스
- OS
- C++
- java
- 해답
- 연습문제
- 쉽게배우는자바프로그래밍
- 정답
- 구현
- 운영체제
- 우종정
- 쉽게 배우는 자바 프로그래밍
- Web
- BFS
- 풀이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |