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

비가싫어요님의 프로필 이미지

작성한 질문수

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

1-G

1-G 출력 관련 질문입니다.

23.11.17 18:48 작성

·

147

0

선생님이 보여주신 코드를 제 IDE에 옮기고 실행을 시켜봤습니다.

그리고 예시 입력을 넣어보면
3

a*d

abcd

anestonestod

facebookDA

DA

이렇게 출력이 되면서 마지막 NE가 나오지 않고 프로그램이 종료가 안 되고 계속 돌아가네요.

그런데 답 제출을 해보면 맞았다고는 나옵니다.

왜 이러는걸까요..?

답변 1

0

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

2023. 11. 17. 22:13

안녕하세요 JUNN님 ㅎㅎ

혹시 해당 부분 캡처 가능하실까요?

마지막에 엔터쳐도 아예 NE가 안되나요?

프로그램은 종료가 안될수도 있습니다.

비가싫어요님의 프로필 이미지

2023. 11. 17. 22:53

아 마지막에 엔터를 치니까 NE가 나오면서 종료가 되네요!

혹시 왜 이러는 것인지 알 수 있을까요? 뭔가 입출력이 잘 안 되면 잘못 풀었나 싶어서 삽질을 할 수도 있을 것 같아서 이런 상황을 좀 방지하고 싶어서요!

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

2023. 11. 17. 23:00

음.. 입력 -> 출력으로 해놓았기 때문에 발생이 될 수도 있는 부분인데요. 신경 안쓰셔도 되는 부분입니다.

만약 이게 신경이 쓰이시면 이렇게 바꾸면 됩니다.

입력 -> 출력이 아니라

모든 입력 -> 모든 출력 이렇게 하시면 되지만..

이렇게 말이죠.

#include<bits/stdc++.h> 
using namespace std;   
int n; 
string s, ori_s, pre, suf; 
int main(){
    cin >> n;
    cin >> ori_s;  
    int pos = ori_s.find('*');  
    pre = ori_s.substr(0, pos); 
    suf = ori_s.substr(pos + 1); 
    vector<string> ret; 
    for(int i = 0; i < n; i++){
        cin >> s; 
        if(pre.size() + suf.size() > s.size()){
            ret.push_back("NE"); 
        }else{
            if(pre == s.substr(0, pre.size()) && suf == s.substr(s.size() - suf.size()))ret.push_back("DA");
            else ret.push_back("NE");
        } 
    } 
    for(string a : ret)cout << a << "\n";
    return 0;
} 

하지만... 이렇게 되면 추가코드가 생기기 때문에 비추 드립니다.

그런 부분이 아니라 로직에 집중해주세요. ㅎㅎ

감사합니다.