```
백준 5800번 성적통계 C++ 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 5800번 성적 통계 풀이
- 최댓값, 최솟값, 최대 인접 차 구하기
https://www.acmicpc.net/problem/5800
5800번: 성적 통계
첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다
www.acmicpc.net
백준 5800번은
난이도 실버 등급의 문제로서
테스트 케이스만큼
표본의 갯수와 표본 값들이 주어질 때
각 표본의 최댓값, 최솟값 그리고 인접 차이의 최댓값을 구해서 출력하면 되는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
테스트 케이스를 입력받고
테스트 케이스만큼 for문을 돌면서
표본수를 입력받고
입력받은 표본수만큼 for문을 돌면서
표본 값을 입력받고
표본값을 입력받으면서
max 값 min값과 비교해서
각 값을 구해주고
겸사겸사 벡터에 표본을 넣은 뒤
for문 끝나고
벡터를 정렬해주고
정렬된 벡터에서 표본 값의 차이를 구해주었습니다.
전체 코드는 다음과 같습니다
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <array>
#include <stack>
#include <queue>
#include <map>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <regex>
#include <unordered_map>
int main()
{
// 입력 최적화
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
std::string inputStr;
std::getline(std::cin, inputStr);
int32_t testCase = stoi(inputStr);
for (int32_t i = 0; i < testCase; i++)
{
printf("Class %d\n", (i + 1));
int32_t maxScore = 0;
int32_t minScore = INT32_MAX;
int32_t maxDifference = 0;
std::vector<int32_t> scoreVec;
std::getline(std::cin, inputStr);
std::stringstream ss(inputStr);
int32_t numOfStudents;
ss >> numOfStudents;
for (int32_t i = 0; i < numOfStudents; i++)
{
int32_t score;
ss >> score;
scoreVec.push_back(score);
maxScore = std::max(score, maxScore);
minScore = std::min(score, minScore);
}
std::sort(scoreVec.begin(), scoreVec.end());
int32_t prevScore = scoreVec[0];
for (int32_t i = 0; i < scoreVec.size(); i++)
{
maxDifference= std::max(maxDifference, std::abs(scoreVec[i] - prevScore));
prevScore = scoreVec[i];
}
printf("Max %d, Min %d, Largest gap %d\n", maxScore, minScore, maxDifference);
}
}
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
참조 및 인용
C++ Primer
Introduction to Algorithms
https://codemasterkimc.tistory.com/35
C++ 이론을 배울수 있는 곳 정리
개요 C++을 배우는 책, 강의, 블로그, 링크 등을 공유합니다. (링크 및 간략한 설명을 하였으나 만약 원작자가 링크를 거는것을 원치 않을 경우 연락주시기 바랍니다.) 서적 https://www.amazon.com/Prime
codemasterkimc.tistory.com
https://codemasterkimc.tistory.com/50
300년차 개발자의 좋은 코드 5계명 (Clean Code)
이번 글을 통해 배워갈 내용 좋은 코드(Clean Code)를 작성하기 위해 개발자로서 생각해볼 5가지 요소를 알아보겠습니다. 개요 좋은 코드란 무엇일까요? 저는 자원이 한정적인 컴퓨터 세상에서 좋
codemasterkimc.tistory.com
'C++ > C++ 알고리즘' 카테고리의 다른 글
백준 5054번 주차 C++ 구현해보기 (0) | 2021.10.16 |
---|---|
백준 7510번 고급수학 C++ 구현해보기 (0) | 2021.10.14 |
백준 2502번 떡먹는 호랑이 C++ 구현해보기 (0) | 2021.10.07 |
백준 2947번 나무조각 C++ 구현해보기 (0) | 2021.10.04 |
백준 17300번 패턴 C++ 구현해보기 (0) | 2021.10.02 |
```
백준 5800번 성적통계 C++ 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 5800번 성적 통계 풀이
- 최댓값, 최솟값, 최대 인접 차 구하기
https://www.acmicpc.net/problem/5800
5800번: 성적 통계
첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다
www.acmicpc.net
백준 5800번은
난이도 실버 등급의 문제로서
테스트 케이스만큼
표본의 갯수와 표본 값들이 주어질 때
각 표본의 최댓값, 최솟값 그리고 인접 차이의 최댓값을 구해서 출력하면 되는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
테스트 케이스를 입력받고
테스트 케이스만큼 for문을 돌면서
표본수를 입력받고
입력받은 표본수만큼 for문을 돌면서
표본 값을 입력받고
표본값을 입력받으면서
max 값 min값과 비교해서
각 값을 구해주고
겸사겸사 벡터에 표본을 넣은 뒤
for문 끝나고
벡터를 정렬해주고
정렬된 벡터에서 표본 값의 차이를 구해주었습니다.
전체 코드는 다음과 같습니다
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <array>
#include <stack>
#include <queue>
#include <map>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <regex>
#include <unordered_map>
int main()
{
// 입력 최적화
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
std::string inputStr;
std::getline(std::cin, inputStr);
int32_t testCase = stoi(inputStr);
for (int32_t i = 0; i < testCase; i++)
{
printf("Class %d\n", (i + 1));
int32_t maxScore = 0;
int32_t minScore = INT32_MAX;
int32_t maxDifference = 0;
std::vector<int32_t> scoreVec;
std::getline(std::cin, inputStr);
std::stringstream ss(inputStr);
int32_t numOfStudents;
ss >> numOfStudents;
for (int32_t i = 0; i < numOfStudents; i++)
{
int32_t score;
ss >> score;
scoreVec.push_back(score);
maxScore = std::max(score, maxScore);
minScore = std::min(score, minScore);
}
std::sort(scoreVec.begin(), scoreVec.end());
int32_t prevScore = scoreVec[0];
for (int32_t i = 0; i < scoreVec.size(); i++)
{
maxDifference= std::max(maxDifference, std::abs(scoreVec[i] - prevScore));
prevScore = scoreVec[i];
}
printf("Max %d, Min %d, Largest gap %d\n", maxScore, minScore, maxDifference);
}
}
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
참조 및 인용
C++ Primer
Introduction to Algorithms
https://codemasterkimc.tistory.com/35
C++ 이론을 배울수 있는 곳 정리
개요 C++을 배우는 책, 강의, 블로그, 링크 등을 공유합니다. (링크 및 간략한 설명을 하였으나 만약 원작자가 링크를 거는것을 원치 않을 경우 연락주시기 바랍니다.) 서적 https://www.amazon.com/Prime
codemasterkimc.tistory.com
https://codemasterkimc.tistory.com/50
300년차 개발자의 좋은 코드 5계명 (Clean Code)
이번 글을 통해 배워갈 내용 좋은 코드(Clean Code)를 작성하기 위해 개발자로서 생각해볼 5가지 요소를 알아보겠습니다. 개요 좋은 코드란 무엇일까요? 저는 자원이 한정적인 컴퓨터 세상에서 좋
codemasterkimc.tistory.com
'C++ > C++ 알고리즘' 카테고리의 다른 글
백준 5054번 주차 C++ 구현해보기 (0) | 2021.10.16 |
---|---|
백준 7510번 고급수학 C++ 구현해보기 (0) | 2021.10.14 |
백준 2502번 떡먹는 호랑이 C++ 구현해보기 (0) | 2021.10.07 |
백준 2947번 나무조각 C++ 구현해보기 (0) | 2021.10.04 |
백준 17300번 패턴 C++ 구현해보기 (0) | 2021.10.02 |