inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

4-O

4-O 채점 관련 질문

2

pshpark12345

작성한 질문수 10

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요. 강사님,
코딩살구클럽 채점 방식에 대한 문의입니다!

제가 풀이한 방식은

#include <bits/stdc++.h>
using namespace std;
int N, ret;
int forward_max, reverse_max;
string s;
stack<char> stk;
int main() {

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> N >> s;
    int cnt = 0;
    for (int i = 0; i < N; i++) {
        if (s[i] == '(') {
            stk.push(s[i]);
        }
        else {
            if (stk.size()) {
                stk.pop();
                cnt+=2;
                forward_max = max(forward_max,cnt);
            } else {
                forward_max = max(forward_max, cnt);
                cnt = 0;
            }
        }
    }
    stk = stack<char>();
    reverse(s.begin(), s.end());
    cnt = 0;
    for (int i = 0; i < N; i++) {
        if (s[i] == ')') {
            stk.push(s[i]);
        }
        else {
            if (stk.size()) {
                stk.pop();
                cnt+=2;
                reverse_max = max(reverse_max,cnt);
            } else {
                reverse_max = max(reverse_max, cnt);
                cnt = 0;
            }
        }
    }

    ret = min(forward_max, reverse_max);
    cout << ret << '\n';


    return 0;
}

이러한 방식으로 풀어서 채점사이트 기준에서는 맞았었는데요..!
강사님 수업을 듣고 제 방식에 문제가 있지 않나 해서 GPT에게 물어봐 이렇게 푸는 방식도 맞는 풀이인지 물어보니, 반례가 존재하는 코드였더라구요. 백준처럼 테스트케이스가 엄청 많지 않아 생기는 것 같은데, , , 문제별 테스트케이스를 늘려주실 수 있을까요..?

c++ 코딩-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. pshpark12345님.

질문해주신 내용과 관련하여 코드에서 발생할 수 있는 문제점을 검토해보았습니다. 작성하신 코드의 핵심은 괄호 쌍을 맞추는 문제이며, 이 과정에서 사용하신 접근 방식은 스택을 통한 괄호 처리입니다. 다만, ‘reverse’ 부분에 대해 몇 가지 유의사항이 필요합니다.

코드 리뷰 및 문제점:

  1. 스택 사용:

    • 스택을 이용하여 괄호의 쌍을 검사하는 방식은 좋지만, 스택 초기화를 철저히 해야 정확한 판단이 가능합니다.
  2. Forward와 Reverse 검사:

    • ‘forward_max’와 ‘reverse_max’를 별도로 체크하며 최적의 값을 찾아내는 것은 좋은 접근입니다. 하지만, ‘max’와 ‘min’ 처리에서 자칫 잘못하면 역방향 검사에서 의도치 않은 결과를 초래할 수 있습니다.
  3. 순서가 잘못된 경우:

    • 주어진 문자열을 뒤집어서 역방향으로 검사하는 로직이 잘못될 수 있습니다. 오히려 이 처리에서 false positive 결과가 나올 수 있습니다.

추천 사항 및 실전 접근:

  • 문자열의 각 위치에서 스택의 상태를 정확히 표현할 수 있도록, 상시 비어있는지 여부를 체크하는 것이 중요합니다.
  • ‘forward’ 과정과 ‘reverse’의 분할 해결법이 기능적으로는 좋은 절단점을 만들 수 있지만, 실제 입력 케이스가 예정하지 않은 패턴으로 됩니다.

현재 문제 해결 및 관련 소스 코드를 비교 검토할 수 있는 링크:

현재 기존에 비슷한 패턴에 대해 논의된 코드 및 반례를 확인하실 수 있도록 몇 가지 링크를 추천드립니다. 여기에서 제공된 질문 및 답변들이 도움이 될 수 있습니다:

이러한 답변들이 도움이 되기를 바랍니다. 문제를 해결하지 못하신다면 추가적인 질문을 남겨주세요. 곧 지식공유자께서 할인된 문제를 다루고 답변을 도와드릴 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않은 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

코딩살구클럽가입

0

4

1

코딩살구클럽 가입

0

25

2

비쥬얼 스튜디오로 해도 되나요?

0

37

2

코딩살구클럽 가입 문의

0

69

2

코딩 살구 클럽 컴파일 에러

0

45

3

추천 문제

0

40

2

코딩살구클럽 승인

0

47

2

코살구 1주차 1940번 문제 조건과 프라이빗 테스트 불일치 문의

0

41

2

문제를 고민하는 시간 관련

0

32

2

코딩살구클럽

0

47

2

코딩살구클럽 문의

0

53

2

코딩살구클럽 승인

0

44

2

DP 경우의 수 설명이 이해가 되지 않습니다.

0

39

2

3-F 채점 관련 질문

0

39

1

BFS, DFS 활용이 되는 상황에서의 방향성

0

41

2

코딩살구클럽 승인

0

48

2

코딩살구클럽승인

0

40

3

코딩살구클럽 승인

0

64

2

3-D 관련 질문

0

36

2

코살구 회원가입 문의

0

48

2

코살구 로그인 문제

0

68

2

3-A 문제 풀이 관련 질문

0

60

3

2-O 질문 있습니다

0

39

2

2-T 문제에 관한 질문

0

42

2