Chlln's Code/C++ 알고리즘 코딩테스트

[알고리즘 코딩 테스트] Ch03 - 1 : 배열과 리스트 그리고 벡터

Chlln Vlln 2023. 3. 20. 15:46

문제 001. 숫자의 합 구하기

N개의 숫자가 공백 없이 쓰여 있다. 이 숫자를 모두 합해 출력하는 프로그램을 작성하시오.

 

  • 입력
    • 1번째 줄에 숫자의 개수 N(1 ≤ N ≤ 100), 2번째 줄에 숫자 N개가 공백 없이 주어진다.
  • 출력
    • 입력으로 주어진 숫자 N개의 합을 출력한다.
예제 입력 1 예제 출력 1
1
1
1
예제 입력 2 예제 출력 2
5
54321
15
#include <iostream>
using namespace std;

int main(void) {
	int num, sum = 0;
	string sNum;

	cin >> num >> sNum;

	for (int i = 0; i < num; i++)
		sum += sNum[i] - '0';	// '0' = 48, '1' = 49, '2' = 50 ...
					//   '8' = 56, '9' = 57
	cout << sum << endl;

	return 0;
}

문제 002. 평균 구하기

세준이는 기말고사를 망쳤다. 그래서 점수를 조작해 집에 가져가기로 결심했다. 일단 세준이는 자기 점수 중 최댓값을 골랐다. 그런 다음 최댓값을 M이라 할 때 모든 점수를 점수 / M * 100으로 고쳤다. 예를 들어 세준이의 최고점이 70점, 수학 점수가 50점이라면 수학 점수는 50 / 70 * 100이므로 71.43점이다. 세준이의 성적을 이 방법으로 계산했을 때 새로운 평균을 구하는 프로그램을 작성하시오.

 

  • 입력
    • 1번째 줄에 시험을 본 과목의 개수 N이 주어진다. 해당 값은 1,000보다 작거나 같다. 2번째 줄에 세준이의 현재 성적이 주어진다. 해당 값은 100보다 작거나 같은, 음이 아닌 정수이고, 적어도 1개의 값은 100보다 크다.
  • 출력
    • 1번째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대 오차 또는 상대 오차가 10^-2 이하이면 정답이다.
예제 입력 1 예제 출력 1
3
40 80 60
75.0
예제 입력 2 예제 출력 2
3
10 20 30
66.666667
#include <iostream>
using namespace std;

int main(void) {
	int num, sum = 0, grade[1000], max = 0;

	cin >> num;

	for (int i = 0; i < num; i++) {
		cin >> grade[i];
		sum += grade[i];
	}

	for (int i = 0; i < num && max < grade[i]; i++)
		max = grade[i];

	double result = sum * static_cast<double>(100) / max / num;
	cout << result << endl;
}