반응형
https://www.hackerrank.com/challenges/ctci-comparator-sorting/problem
주어진 구조체 player를 정렬하되, 첫번째로 멤버변수 score를 내림차순으로 정렬하고 만약 score가 같으면 멤버변수 name을 사전순으로 정렬하도록 하는 함수를 만드는 것이다.
간단하게 두 변수를 비교하는 compareBySN(p1, p2) 함수를 만들어 첫번째 파라미터가 더 앞에 오는 조건이면 true, 아니면 false를 반환하게 구현한 다음 STL algorithm 안에 내장되어 있는 sort를 사용하면 된다.
algorithm::sort 함수의 사용방법은 다음과 같다.
sort(배열의 첫 주소, 배열의 마지막 주소, 비교에 사용할 함수이름)
그리고 string::compare 함수는 호출한 멤버가 사전순으로 앞이면 음수, 같으면 0, 인자로 받은 string이 더 앞에 오는 조건이면 양수를 리턴한다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | bool compareBySN(Player p1, Player p2) { if(p1.score > p2.score) { return true; } else if (p1.score == p2.score) { if (p1.name.compare(p2.name) < 0) { return true; } else { return false; } } else { return false; } } vector<Player> comparator(vector<Player> players) { sort(players.begin(),players.end(),compareBySN); return players; } | cs |
풀이시간 : 15분?
풀이 중 문제점 :
1. string 비교 함수의 반환값의 의미를 몰라서 검색해 봤었다.
2. algorithm::sort 함수의 세번째 인자로 주는 함수는 어떤 조건에서 true를 리턴해야 되는지 검색해 봤었다.
반응형
'개발자의 길 > Algorithm' 카테고리의 다른 글
[Algorithm] 해커랭크 - Hash Tables: Ice Cream Parlor (0) | 2018.03.28 |
---|---|
[Algorithm] 해커랭크 - Time Complexity: Primality (0) | 2018.03.28 |
[Algorithm] 해커랭크 - Bit Manipulation: Lonely Integer (0) | 2018.03.22 |
[Algorithm] 해커랭크 - Recursion: Fibonacci Numbers (0) | 2018.03.22 |
[Algorithm]해커랭크 - Queues: A Tale of Two Stacks (0) | 2018.03.20 |