문제 요약
첫번째 인풋은 입력받을 정수의 개수 나머지 인풋은 그 정수의 값들을 받는다.
3개의 라인으로 출력해라.
- 양수의 개수 / 정수의 개수
- 음수의 개수 / 정수의 개수
- 0의 개수 / 정수의 개수
소수 6째 자리까지 표현 해야된다.
Sample Input
6
-4 3 -9 0 4 1
- 양수 : 3개(3,4,1)
- 음수 : 2개(-4,-9)
- 0 : 1개(0)
Sample OutPut
0.500000
0.333333
0.166667
- 3/6 = 0.500000
- 2/6 = 0.333333
- 1/6 = 0.166667
내 소스
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {
static void Main(String[] args) {
int n = Convert.ToInt32(Console.ReadLine());
string[] arr_temp = Console.ReadLine().Split(' ');
int[] arr = Array.ConvertAll(arr_temp,Int32.Parse);
int plusCount = 0;
int minusCount = 0;
int zeroCount = 0;
for (int i = 0; i < n ; i++)
{
if (arr[i] > 0)
plusCount++;
else if (arr[i] < 0)
minusCount++;
else
zeroCount++;
}
Console.WriteLine(string.Format("{0:f6}", (float)plusCount/n));
Console.WriteLine(string.Format("{0:f6}", (float)minusCount/n));
Console.WriteLine(string.Format("{0:f6}", (float)zeroCount/n));
}
}
vatsalchanana의 답안
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
float pl = 0, mn = 0, zr = 0;
for (int i = 0; i < n; i++) {
int val;
cin >> val;
zr += (val == 0);
pl += (val > 0);
mn += (val < 0);
}
zr = zr / (double)n;
pl = pl / (double)n;
mn = mn / (double)n;
printf("%0.06lf\n%0.06lf\n%0.06lf\n", pl, mn, zr);
return 0;
}
느낀점
문제 자체는 크게 어려운게 없다.
콘솔 출력시 서식문자를 가지고 출력하는 방법만 알면 쉬운 문제다.