inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

교안 84P sort(), comp 관련 질문

237

오늘아침딸기

작성한 질문수 3

1

교안 84p 코드입니다

#include<bits/stdc++.h>
using namespace std;
vector<pair<int, int>> v;
bool cmp(pair<int, int> a, pair<int, int> b){
return a.first > b.first;
}
int main(){
for(int i = 10; i >= 1; i--){
v.push_back({i, 10 - i});
}
sort(v.begin(), v.end(), cmp);
for(auto it : v) cout << it.first << " : " << it.second << "\n";
return 0;
}

sort()함수 동작과정이 머리로는 생각이 안나서 검색해보니 퀵정렬 방식으로 동작하는거 까지는 알았습니다

근데 cmp가 들어가면서 어떻게 동작되는지는 구조가 안떠오르는거 같습니다

정리하자면 bool cmp()함수가 벡터 v에서 어떻게 동작하는지,

return a.first > b.first가 뭐를 의미하는지

첫질문이라 질문이 명확하지 않을수도 있을거 같습니다 ㅠㅠ

c++ 코딩-테스트

답변 2

1

큰돌

안녕하세요 딸기님 ㅎㅎ

요소들을 비교할 때의 기준이라고 보시면 됩니다. 만약

a, b, c, d 라고 요소들이 있고

bool cmp()함수가

다음과 같다고 해볼게요.

bool cmp(int a, int b){
	return a < b;  
}

int타입의 인자 2개를 비교해서 a < b라면 true라는 값을 반환하는 단순한 함수입니다.

 

이 함수가 요소들 사이사이 다 성립되게 하는 것이죠.

sort를 통해 배열안의 모든 요소들이

a < b < c < d

로 만드는 것입니다.

즉,

10, 2, 11, 3 이거를.

2 , 3, 10 , 11

이렇게 만들어서

2 < 3 < 10 < 11

이렇게 양옆의 요소들이 전부 cmp의 조건을 충족시키는 리스트로 만든다고 보시면 됩니다.

 

만약

return a.first > b.first

라면. first가 > 인 순으로 모든 요소들을 만족시키는 배열을 만드는 것이죠.



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

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

감사합니다.

강사 큰돌 올림.


0

오늘아침딸기

완전히 이해했습니다 감사합니당

1

인프런 AI 인턴

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

오늘아침딸기님께서 질문하신 sort() 함수와 cmp 함수의 동작 방식에 대해 궁금증을 해소하기 위해 유사한 답변을 찾아보았습니다.

먼저, sort() 함수는 C++의 표준 템플릿 라이브러리(STL)에 있는 함수로, 컨테이너의 내용을 정렬할 때 사용합니다. 기본적으로 오름차순으로 정렬하나, 사용자 지정 비교 함수(cmp)를 제공함으로써 다양한 정렬 기준을 적용할 수 있습니다.

cmp 함수는 보통 두 객체를 비교하여 정렬 기준을 결정하는 데 사용되며, sort() 함수 내에서 비교 연산자로 작용합니다. 예시에서 return a.first > b.first;pairfirst 값을 기준으로 내림차순으로 정렬하고자 할 때 사용하며, ab보다 더 큰 경우 true를, 아닌 경우 false를 리턴합니다.

질문에 언급된 코드에서 sort(v.begin(), v.end(), cmp); 부분은 v 벡터를 cmp 함수의 기준에 따라 정렬하는 것을 의미합니다. 여기서 cmp 함수는 pairfirst 값이 큰 순서대로(내림차순으로) 벡터를 정렬하도록 합니다.

아래는 유사한 내용을 다룬 기존 답변의 링크입니다. 해당 답변에서도 정렬과 cmp 함수에 대한 사용 예가 설명되어 있어, 이해에 도움이 될 것으로 보입니다.

2-S 1325 질문 있습니다.
- 강의 수강생이 cmp 함수를 사용하여 정렬 기준을 어떻게 설정하는지에 대한 질문을 하였고, 강사님께서는 < 연산자와 > 연산자가 오름차순 및 내림차순 정렬에 어떻게 적용되는지 설명해주셨습니다.

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

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

0

9

2

문제를 고민하는 시간 관련

0

17

2

코딩살구클럽

0

30

2

코딩살구클럽 문의

0

32

2

코딩살구클럽 승인

0

33

2

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

0

33

2

3-F 채점 관련 질문

0

30

1

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

0

32

2

코딩살구클럽 승인

0

44

2

코딩살구클럽승인

0

39

3

코딩살구클럽 승인

0

51

2

3-D 관련 질문

0

35

2

코살구 회원가입 문의

0

45

2

코살구 로그인 문제

0

65

2

3-A 문제 풀이 관련 질문

0

56

3

2-O 질문 있습니다

0

38

2

2-T 문제에 관한 질문

0

40

2

코딩 살구 클럽 접속 및 사용방법 문의

0

63

2

안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~

0

65

2

코딩살구클럽 로그인문제

0

84

3

코딩 살구 클럽 로그인 문제

0

85

2

2-J 채점관련 질문

0

67

3

코딩 살구 클럽 Python 지원 가능 여부

0

77

1

살구클럽 아이디 없음 문제

0

76

1