강의

멘토링

로드맵

Inflearn brand logo image

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

문상준님의 프로필 이미지
문상준

작성한 질문수

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

2-I

2870 재질문입니다.

해결된 질문

작성

·

86

1

2870 반례부탁드립니다. - 인프런 (inflearn.com)재질문입니다. 제시해주신 비교함수로 하니 성공을 했습니다. 그런데 제 로직은 어디서 잘못되었나요?제가 이해하기로제시해주신 로직은
  1. size가 다르다면, 그 크기에 대해서 참 거짓 판별
  2. size가 같다면, a와 b의 모든 자리수를 비교하여, 참 거짓 판별
인것 같습니다.제 로직또한 비슷한 로직 같습니다...어디서 잘못되었을까요?

답변 1

0

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

안녕하세요 상준님 ㅎㅎ

그런 식으로 해도 되지만,

a < b 라는 의미는 a < b일 때는 true, 그 외는 다 false여야 하는게 녹여들어가야 합니다.

상준님 코드는 이런 반례가 있습니다.

9888 < 9888 를 비교했을 때 false여야 하지만,

이게 true값을 가지게 되겠죠?

 

제가 한번 상준님 코드식 + 다듬어 봤는데요.

bool bigStringIntCompare(string a,string b){
    if(a.size()<b.size()) return true;
    else if(a.size()>b.size()) return false;
    else{
        for(int i=0;i<a.size();i++){
            if(a.c_str()[i]< b.c_str()[i]) return true;
            else if(a.c_str()[i] > b.c_str()[i]) return false; 
        }
        return false;
    }
}

이렇게 해보시겠어요?


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

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

감사합니다.

강사 큰돌 올림.


문상준님의 프로필 이미지
문상준

작성한 질문수

질문하기