[BAEKJOON - C++] 10984번 : 내 학점을 구해줘

정다은·2023년 7월 2일
0

BAEKJOON

목록 보기
17/54

🍑문제

게으른 근우는 열심히 놀다가 문득, 자신의 학점 평균이 얼마일지 궁금해졌다. 학사시스템도 들어가기 귀찮아하는 근우를 위해 구해주도록 하자.

입력
첫 번째 줄에 학기의 수 T가 주어진다. 두 번째 줄부터 T개 학기에 대한 정보가 주어진다.

각 학기에 대한 정보는 다음과 같이 구성되어 있다. 첫 번째 줄에 들었던 과목의 수 N이 주어지고, 다음 N개 줄에 걸쳐서 N개 과목들의 학점 C와 성적 G가 주어진다. (1 ≤ N ≤ 10, 1 ≤ C ≤ 6, C는 정수) G는 {0, 0.7, 1, 1.3, 1.7, 2, 2.3, 2.7, 3, 3.3, 3.7, 4, 4.3} 중 하나이며 소수 부분은 최대 한 자리까지 주어진다.

출력
각 학기에 대해 근우의 총 학점과 평점(GPA)을 출력한다. 정답과의 절대 오차는 10-1까지 허용한다.

🍑대략적인 틀

  • 첫번째 줄에 학기 수 → 같은 코드를 몇번 반복해야하는 건지(1~10)
  • 두번째 줄에 과목의 수 → 과목수(1~6)만큼 학점과 성적을 입력
  • 다 입력받고 마지막에 총 학점과 gpa 출력.
    • 총학점은 각 학기마다 다 더해서 구하고
    • gpa는 학점 * 성적을 다 더해서 과목수로 나눈다.
  • 짜다보니 너무 변수가 많은데 줄일 수 있는 법은 없으려나 무언가를 입력받고 계산을 해서 마지막에 분리해서 출력하는게 너무 어렵다

🍑오류 해결

  • 어떻게 짜는 코드마다 컴파일 오류는 안나는데 맨날 넘치고 범위가 아니고 그러는지.. ㅠㅠ 배열을 쓰면 실행 오류가 뜨는 경우가 너무 잦은 것 같다.
    결국 vector가 아닌 일반 배열을 선언해서 하니 오류가 뜨지 않았다. 생각보다 벡터가 편리하지만 까다로운 듯 하다.

  • cout은 소수점 조절해서 출력하는 방법을 몰랐는데 방법을 배웠던 문제였다.

🍑 작성한 코드

// 내 학점을 구해줘

#include <iostream>
using namespace std;

int main() {
	int semester, subject, hakjum, sumHakjum;
	double score, GPA;

	cin >> semester;
	int count = semester;

	int saveH[100];
	double saveS[100];

	while (true) {
		sumHakjum = 0, GPA = 0;

		cin >> subject;
		for (int i = 0; i < subject; i++) {
			cin >> hakjum >> score;
			sumHakjum += hakjum, GPA += (hakjum * score);
		}
		saveH[semester - count] = sumHakjum;
		saveS[semester - count] = GPA/sumHakjum;

		count--;
		if (count == 0)
			break;
	}

	cout << fixed;
	cout.precision(1);
	for (int i = 0 ; i < semester; i++) {
		cout << saveH[i] << " " << saveS[i] << endl;
	}
}
profile
보안 공부하는 대학교 3학년 / 시리즈에서 더욱 편하게 글을 찾아보실 수 있습니다:)

0개의 댓글