한량처럼 살고 싶다

[이것이 코딩테스트다]성적이 낮은 순서로 학생 출력하기(C++) 본문

PS/이코테

[이것이 코딩테스트다]성적이 낮은 순서로 학생 출력하기(C++)

투영 2023. 2. 3. 20:04

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=247882118

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다. 최근 5년간의 코딩 테스트 기출문제

www.aladin.co.kr

해당 도서의 정렬 단원의 실전문제 3번 '성적이 낮은 순서로 학생 출력하기'을 풀이한다.


문제 조건

 

  • N 명의 학생 정보가 있고, 첫번째 줄에 N이 입력된다
  • 학생 정보는 이름과 성적으로 구분되어 입력되고, 2번째 줄부터 N개의 줄에 걸쳐 입력된다.
  • 성적이 낮은 순서대로 이름을 출력하시오.

 

문제 풀이

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

int N;
vector <pair<string, int>> students;

bool compare(pair<string, int>i, pair<string, int>j) {
	return i.second < j.second;
}

void input() {
	scanf("%d", &N);

	string name;
	int score;

	for (int i = 0; i < N; i++) {
		cin >> name;
		scanf("%d", &score);

		students.push_back(make_pair(name, score));
	}
}

void solution() {
	sort(students.begin(), students.end(), compare);

	vector<pair<string, int>>::iterator it;

	for (it = students.begin(); it != students.end(); it++) cout << (*it).first << ' ';
}

int main(void) {
	input();
	solution();
}

 

요소 2개 페어벡터 정렬 과거의 내가 정리해뒀다.

https://tooyoung.tistory.com/7

 

요소 2개 페어벡터 vector<pair<>> 정렬하기

sort함수 세 번째 요소로 들어가는 compare 함수 작성하기 first 기준 오름차순 정렬 시 (내림차순일 때는 부등호를 반대로) bool compare(pairi, pairj) { return i.first j.first; }

tooyoung.tistory.com

 

iterator 사용하는 방법 가물가물 했었다. 주의하자.