inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-O

큰돌님 조금 다르게 코드를 작성했는데 한번 봐주시면 감사하겠습니다!

302

정Logan

작성한 질문수 12

1

#include<bits/stdc++.h>
using namespace std;
string a;
bool check(string s) {
    // (과 [를 담을 stack
    stack<char> cstk;

    //만약 ([이면 무조건 담고 그렇지 않은 경우들 체크 , 문자들이 들어가기 때문에 특정 조건에 맞는 선언으로 해야한다. else를 쓰지 않는 방향으로 
    for(char c : s ) {
        if( c == '(' || c == '[') cstk.push(c);
        // 현재 c가 ), ] 인데 stck이 비어있으면 return false;
        if( (c == ')' || c == ']') && cstk.empty()) return false;

        // 여기서 위의 조건의 else가 아닌 두가지 경우로 특정지었다. 
        if( c == ')'){
            if(cstk.top() == '(') cstk.pop();
            else return false;
        }

        if( c == ']') {
            if(cstk.top() == '[') cstk.pop();
            else return false;
        }
    }
    // 다 돌았는데 아무문제없이 cstk.empty면 
    return cstk.empty();
}

int main () {
    while(true) {
        // cin과 다른점은 띄어쓰기도 아스키코드로 받아주기 때문에 띄어쓰기가 포함된 문자열도 한번에 받을 수 있다.
        getline(cin,a);
        if( a == ".") break;
        if(check(a)) cout << "yes\n";
        else cout << "no\n";
    }
}

C++ 코테 준비 같이 해요!

답변 1

1

큰돌

굉장히 좋은데요?

잘짜셨어요 ㅎㅎ 주석 좀 달았습니다.

#include<bits/stdc++.h>
using namespace std;
string a;
bool check(string s) {
	//good
    stack<char> cstk;
	// good
    for(char c : s ) {
        if( c == '(' || c == '[') cstk.push(c);
        // 현재 c가 ), ] 인데 stck이 비어있으면 return false;
        if( (c == ')' || c == ']') && cstk.empty()) return false;

        // 여기서 위의 조건의 else가 아닌 두가지 경우로 특정지었다. 
        if( c == ')'){
            if(cstk.top() == '(') cstk.pop();
            else return false;
        }

        if( c == ']') {
            if(cstk.top() == '[') cstk.pop();
            else return false;
        }
    }
	//size보다 empty로 간단하게 == good
    return cstk.empty();
}

int main () {
    while(true) { 
		//good
        getline(cin,a);
        if( a == ".") break;
		// 모듈화 good
        if(check(a)) cout << "yes\n";
        else cout << "no\n";
    }
}

0

정Logan

빠른 답변 감사합니다!

1-E질문입니다!

0

528

2

3-L 틀린 부분 피드백 부탁드립니다.

0

833

2

1-A문제 순열재귀함수 질문입니다.

0

396

1

1-A 일곱난쟁이문제입니다

0

463

1

문제 풀 때 방향성에 대해

0

807

1

맥에서 vs code로 실행 관련 질문입니다

0

528

1

17071번 메모리 초과

0

388

1

1-C질문입니다!

0

427

2

2-B BFS 시간초과질문

0

636

2

1-O 13번 라인

0

445

1

6-J 놀이공원 문제 질문

0

385

1

구현관련 질문

0

486

1

강의 교안

0

321

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

549

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

538

1

1-K

0

480

2

3-G번 질문있습니다.

1

478

3

3-C 실행 시간 질문드립니다.

0

498

1

4-A 문제 풀이 질문있습니다.

0

598

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

441

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

343

1

3-O go 함수 질문 드립니다.

1

450

2

4-A 출력 질문

0

306

1

1주차 1-O 질문드립니다

0

261

1