일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |
Tags
- viewset
- 삼성큐브냉장고
- 에스티팜
- 등급 검정
- 야생의 숨결
- 내돈내산
- 레오폴드FC660C
- RFHIC
- 천랩
- Algorithm
- 닌텐도스위치
- 라이자의 아틀리에
- 센트랄모텍
- 페르소나5로열
- SW Certificate
- NKE
- tsla
- U32H850
- 삼성 사운드바
- 덕우전자
- 현대차
- 빈센조
- Baekjoon
- 고바이오랩
- LG화학
- it takes two
- django rest framework
- 테스나
- 에이비프로바이오
- 삼성전자
Archives
- Today
- Total
HJ Works
[BAEKJOON 4949] 균형잡힌 세상 본문
스택 응용 문제 중 하나이다.
어려운 내용은 딱히 없고, ( / [ 가 정상적인 종료인지만 확인하면 된다. 따라서, stack을 간단하게 생각하면 기본적인 구현이 가능하다.
예를 들면,
( -> [ -> ( 로 진입하는 문자열이라면, ) ->] -> ) 로 닫혀야 한다.
즉, 소스코드 작성 시와 동일하다고 보면 된다.
따라서 (, [ 일때 push, ), ] 일때 동일 형태의 input일때만 pop 을 하면 된다.
문제에 함정으로 좀 시간을 쓰게 되었는데,
stack 진입을 못 하는 조건에 대한 내용이 히든 케이스로 있다.
), ] 만 사용하는 코너 케이스를 확인하지 못하게 된다.
따라서 이 부분을 처리해 줘야 한다.
즉, 문제에서 주어진 예제는 다 통과하지만, 실제 수행에서 실패한다면
) .
를 추가해서 테스트 해 보면 된다.
더보기
int main() {
while (true) {
char word[101] = { '\0', };
char stack[101] = { '\0', };
int cur = 0, sptr = 0;
bool debug = true;
cin.getline(word, 101);
if (word[0] == '.') break;
while (word[cur] != '.') {
if (word[cur] == '(' || word[cur] == '[') {
stack[sptr++] = word[cur];
}
else if (word[cur] == ')'){
if (stack[sptr - 1] == '(')
stack[--sptr] = '\0';
else debug = false;
}
else if (word[cur] == ']') {
if (stack[sptr -1] == '[')
stack[--sptr] = '\0';
else debug = false;
}
cur++;
}
cout << ((sptr == 0 && debug == true) ? "yes" : "no") << endl;
}
return 0;
}
'Dev > Algorithm' 카테고리의 다른 글
삼성전자 SW 검정 Pro 합격 후기 (1) | 2021.06.22 |
---|---|
[BAEKJOON 1003] 피보나치 함수 (0) | 2021.04.25 |
[CSES.fi] Distinct Numbers (0) | 2021.04.24 |