c++ sort 알고리즘 질문드립니다.
377
25 asked
안녕하세요, 선생님.
숫자로 바꿔서 크기를 비교하는 경우에 Out of range 에러가 발생해서, 문자열의 크기를 비교하는 compare함수를 직접 구현을 해서 풀었습니다.
그런데 제가 구현한 compare함수에서 비교하는 두 문자열이 같은 경우에, true를 반환하면 에러가 발생하고, false를 반환하면 에러가 발생하지 않는지 이유를 잘 모르겠어서 질문드립니다.
감사합니다.
http://boj.kr/667ee88dbe1f40dc88c2a27c2636868d
Answer 1
0
안녕하세요 Grid님 ㅎㅎ
코드 좋네요. ㅎㅎ
다만, 질문이 좀 있는데요.
bool compare(string a, string b)
{
if (a.size() == b.size())
{
for (int i = 0; i < a.size(); i++)
{
if (a[i] != b[i])
{
return a[i] < b[i];
}
}
return false; // true로 하면 에러 발생!!!
굳이 compare 함수에 < 오퍼레이터를 쓰지 않고 false 또는 true를 쓰신 이유가 있으실까요?
아마 제 생각에는 하나하나 비교하고 그렇지 않은 경우에는 ~~ 하고 생각하신 것 같은데 맞으실까요?
먼저,
if (a.size() == b.size())
{
return a < b;이렇게 하는게 좋습니다.
그리고..
왜 TRUE가 되지 않냐면요.
a < b라고 했을 때
a == b 의 상황에서 저 if문은 false가 반환되죠?
그렇기 때문에 false를 넣어주어야 합니다.
또한, 참고로 말씀을 드리면
sort(answer.begin(), answer.end(), compare);이렇게 넣으셨죠?
sort함수는 < 오퍼레이터를 기준으로 정렬하는 함수입니다. 즉, compare 함수 안에는 < 오퍼레이터를 기준으로 설명되는 함수가 들어가야 합니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
BFS, DFS 활용이 되는 상황에서의 방향성
0
2
1
코딩살구클럽 승인
0
9
1
코딩살구클럽승인
0
7
1
코딩살구클럽 승인
0
41
2
3-D 관련 질문
0
31
2
코살구 회원가입 문의
0
38
2
코살구 로그인 문제
0
58
2
3-A 문제 풀이 관련 질문
0
51
3
2-O 질문 있습니다
0
38
2
2-T 문제에 관한 질문
0
38
2
코딩 살구 클럽 접속 및 사용방법 문의
0
56
2
안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~
0
64
2
코딩살구클럽 로그인문제
0
74
3
코딩 살구 클럽 로그인 문제
0
79
2
2-J 채점관련 질문
0
65
3
코딩 살구 클럽 Python 지원 가능 여부
0
77
1
살구클럽 아이디 없음 문제
0
76
1
1-O 코딩살구클럽 채점관련 질문
0
60
2
히든 테스트 케이스가 사라졌습니다
0
57
1
채점서버 혹시 다른 언어 지원도 가능하게 해주실 수 있나요
1
74
2
살구 클럽 채점 관련 문의(테스트 케이스)
0
66
2
1-H 문제 채점하기 오류
0
58
3
코딩살구클럽 2주차 2-L 문제 채점하기 오류
0
52
2
살구 클럽 채점 관련 문의
0
63
2

