인프런 커뮤니티 질문&답변

박승한님의 프로필 이미지
박승한

작성한 질문수

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

1-G

1-G 이왜틀..

해결된 질문

작성

·

315

·

수정됨

0

http://boj.kr/7a58b316a27d4759a0374f44dba24267

 

질문을 너무 많이해서 죄송합니다...

 

강의를 보기전에 작성한 것인데.. 이게 왜 틀렸는지 모르겠습니다.

 

선생님 알고리즘과 유사한 것 같고 반례도 잡은 것 같은데..

 

다음부터는 딴 짓 안하고 substr 쓰겠습니다..

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 승한님 ㅎㅎ

 

거의 대부분은 잘 짜셨지만

이부분을 해결하지 못합니다 ㅠ
반례:

1

a*a

aa

답 : DA / 승한님 : NE

 

P.S. 우리 substr() 함수 많이 애용해주세요~ㅎㅎ

 

제가 승한님 코드를 조금 다듬어 봤는데요. ㅎㅎ

이 코드도 참고해주세요.

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int cnt, ok;
    string s, tmp_str;

    cin >> cnt;
    cin >> s;
    int star_pos = 0;

    for (int i = 0; i < s.length(); i++) {
        if (s[i] == '*') {
            star_pos = i;
            break;  
        }
    }

    for (int i = 0; i < cnt; i++) {
        ok = 1;
        cin >> tmp_str;

        if (s.length() - 1 <= tmp_str.length()) { 
            for (int j = 0; j < star_pos; j++) {
                if (tmp_str[j] != s[j]) {
                    ok = 0;
                    break;  
                }
            }
 
            for (int j = 1; j <= s.length() - star_pos - 1; j++) {
                if (tmp_str[tmp_str.length() - j] != s[s.length() - j]) {
                    ok = 0;
                    break;  
                }
            }
        } else {
            ok = 0;
        }

        if (ok) {
            cout << "DA" << '\n';
        } else {
            cout << "NE" << '\n';
        }
    }
    return 0;
}

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


박승한님의 프로필 이미지
박승한

작성한 질문수

질문하기