[백준] 10825번 : 국영수 (C++)

2024. 3. 14. 01:12·Programming/C++ - 백준
반응형

 


문제


풀이

vector에 구조체를 넣어 풀이했다.

 

아래는 array에 구조체를 넣어 풀이한 문제이다.

또한, vector을 이용한 sort 함수와 사용자 지정 compare을 자세히 설명해놓았으니 이 부분이 어렵다면 읽어보시는걸 추천한다!  👍👍

 

 

[백준] 11650번 : 좌표 정렬하기 | Sort 함수와 Compare & Array와 Vector 풀이 (C++)

문제 풀이 '이차원 벡터'와 '이차원 배열'로 풀이했다. 총 세 가지의 풀이로 문제를 해결했다! [ '이차원 벡터' 풀이 ] 1. 이차원 벡터 선언 vector v; // 이차원 벡터 선언 2. 이차원 벡터 요소 입력 for

jigoo-log.tistory.com

 

 

 1. vector를 선언하기 위한 구조체(struct) 생성

 

struct score {	// vector 구조체 생성
	string name;
	int kor, eng, math;
};

 

 2. 구조체 vector 선언

 

	vector<score> v;	// 구조체 vector 선언

 

 

 3. 구조체 이름 설정, 구조체의 각 값에 입력 값 저장 

 

	for (int i = 0; i < N; i++) {
		cin >> n >> k >> e >> m;
		
		score s;	// 구조체의 이름 설정
		s.name = n;		// 구조체의 각 값에 입력받은 값을 저장
		s.kor = k;
		s.eng = e;
		s.math = m;
		
		v.push_back({ s.name, s.kor, s.eng, s.math });		// vector에 붙임
	}

 

 4. 조건에 맞게 정렬

 

 // 사용자 지정 compare
bool compare(score a, score b) {
	if (a.kor == b.kor && a.eng == b.eng && a.math == b.math) {	// 4. 모든 점수가 같으면,
		return a.name < b.name;	// 이름이 사전 순
	}
	else if (a.kor == b.kor && a.eng == b.eng) {	// 3. 국어 점수와 영어 점수가 같으면,
		return a.math > b.math;	// 수학 점수가 감소하는 순서로 (내림차순)
	}
	else if (a.kor == b.kor) {	// 2. 국어 점수가 같으면,
		return a.eng < b.eng;	// 영어 점수가 증가하는 순서로 (오름차순)
	}
	else {
		return a.kor > b.kor;	// 1. 국어 점수가 감소하는 순서로 (내림차순)
	}
}

	sort(v.begin(), v.end(), compare);

 

5. 구조체 vector에서 name 값만 출력

 

	for (int i = 0; i < N; i++) {
		cout << v[i].name << "\n";
	}

 

 


 

코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct score {	// vector 구조체 생성
	string name;
	int kor, eng, math;
};

bool compare(score a, score b) {
	if (a.kor == b.kor && a.eng == b.eng && a.math == b.math) {	// 4. 모든 점수가 같으면,
		return a.name < b.name;	// 이름이 사전 순
	}
	else if (a.kor == b.kor && a.eng == b.eng) {	// 3. 국어 점수와 영어 점수가 같으면,
		return a.math > b.math;	// 수학 점수가 감소하는 순서로 (내림차순)
	}
	else if (a.kor == b.kor) {	// 2. 국어 점수가 같으면,
		return a.eng < b.eng;	// 영어 점수가 증가하는 순서로 (오름차순)
	}
	else {
		return a.kor > b.kor;	// 1. 국어 점수가 감소하는 순서로 (내림차순)
	}
}

int main() {
	int N, k, e, m;
	string n;
	vector<score> v;	// 구조체 vector 선언

	cin >> N;

	for (int i = 0; i < N; i++) {
		cin >> n >> k >> e >> m;
		
		score s;	// 구조체의 이름 설정
		s.name = n;		// 구조체의 각 값에 입력받은 값을 저장
		s.kor = k;
		s.eng = e;
		s.math = m;
		
		v.push_back({ s.name, s.kor, s.eng, s.math });		// vector에 붙임
	}

	sort(v.begin(), v.end(), compare);

	for (int i = 0; i < N; i++) {
		cout << v[i].name << "\n";
	}

	return 0;
}

 


결과

 

 

 

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net

 

반응형
저작자표시 (새창열림)

'Programming > C++ - 백준' 카테고리의 다른 글

[백준] 1431번 : 시리얼 번호 | vector 구조체 (C++)  (3) 2024.03.18
[백준] 11656번 : 접미사 배열 | string.substr() 함수를 이용한 '부분 문자열 추출' (C++)  (1) 2024.03.14
[백준] 11650번 : 좌표 정렬하기 | Sort 함수와 Compare & Array와 Vector 풀이 (C++)  (1) 2024.03.14
[백준] 11931번 : 수 정렬하기 4 (C++)  (2) 2024.03.13
[백준] 11866번 : 요세푸스 문제 0 (C++)  (0) 2024.03.13
'Programming/C++ - 백준' 카테고리의 다른 글
  • [백준] 1431번 : 시리얼 번호 | vector 구조체 (C++)
  • [백준] 11656번 : 접미사 배열 | string.substr() 함수를 이용한 '부분 문자열 추출' (C++)
  • [백준] 11650번 : 좌표 정렬하기 | Sort 함수와 Compare & Array와 Vector 풀이 (C++)
  • [백준] 11931번 : 수 정렬하기 4 (C++)
지구코드
지구코드
IT를 공부하고 있는 지구의 코딩공간입니다!
  • 지구코드
    지구의 코딩공간
    지구코드
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 개발 기록
      • [프디아] 파이널 프로젝트 N
      • Back-end
        • Spring
        • Django
      • Programming
        • 알고리즘
        • C++ - 백준
      • Cloud
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    Cloud
    구조체 벡터
    dp
    알파코
    C++
    시간복잡도
    edgelocation
    프디아
    EC2
    다이내믹 프로그래밍
    시간초과
    슬라이딩윈도우
    KDT교육
    신한투자증권
    알파코캠퍼스
    binary_search
    부분 문자열 추출
    피보나치 수
    awscloudclubs
    이진탐색
    프로디지털아카데미
    부트캠프
    큐
    pair 클래스
    fill 함수
    AWS
    k디지털트레이닝
    별 찍기
    정렬
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
지구코드
[백준] 10825번 : 국영수 (C++)
상단으로

티스토리툴바