※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 HackerRank 문제인 Diagonal Difference이다.
문제는 아래 링크를 확인하자.

https://www.hackerrank.com/challenges/plus-minus/problem

 

Plus Minus | HackerRank

Calculate the fraction of positive, negative and zero values in an array.

www.hackerrank.com

주어지는 벡터의 성분들을 살펴 양의 정수, 음의 정수 및 0의 개수를 각각 세자.

 

위에서 구한 개수와 전체 정수의 개수를 이용해 각 종류의 정수의 비율을 소수점 아래 6자리까지 출력하는 것으로 문제를 해결할 수 있다.

 

비율을 계산할 때, 정수끼리의 나눗셈을 그냥 한다면 정수 나눗셈의 몫을 계산하게 되므로 실수의 나눗셈을 구현해야 하는 점에 유의하자.

 

아래의 코드에서 "cout << fixed;"는 실수를 출력할 때 소수점 아래의 자릿수를 고정하기 위해, "cout.precision(6);"은 그 표시되는 자릿수를 6자리로 설정하기 위해 사용되었다.

 

아래는 제출한 소스코드이다.

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

void plusMinus(vector<int> arr) {
	cout << fixed;
	cout.precision(6);

	int total = arr.size();
	int pos = 0, neg = 0, zero = 0;
	for (auto& x : arr) {
		if (x > 0) pos++;
		else if (x < 0) neg++;
		else zero++;
	}

	cout << (double) pos / total << '\n' << (double) neg / total << '\n' << (double) zero / total;
}
728x90

+ Recent posts