Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

문제

Integer 타입의 숫자 배열이 있다. 이 배열은 음수, 양수, 0을 포함 할 수 있다. 전체 배열에서 음수, 양수, 0의 비율을 소숫점 4자리의 정확도로 구하라.

입력 형식

  1. 첫 번째 표준입력으로 배열의 갯수를 입력한다.
  2. 두번째 줄은 음수, 양수, 0 숫자를 배열 만큼 입력한다. 각 숫자들은 공백문자로 구분한다.

출력 형식

반드시 3 줄을 출력해야 한다.
  1. 양수 원소의 갯수 / 배열의 크기
  2. 음수 원소의 갯수 / 배열의 크기
  3. 0의 갯수 / 배열의 크기

입력 예제

6 
-4 3 -9 0 4 1         

출력 예제

0.500000
0.333333
0.166667

설명

배열에서 양수는 3, 음수는 2, 0은 1이다. 따라서 이다.

풀이

golang

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    line, _, _ := reader.ReadLine()
    n, _ := strconv.Atoi(string(line))

    line, _, _ = reader.ReadLine()
    nums := strings.Split(string(line), " ")
    count := []int{0, 0, 0}
    for i := 0; i < n; i++ {
        v, _ := strconv.Atoi(nums[i])
        switch {
        case v > 0:
            count[0]++
        case v < 0:
            count[1]++
        case v == 0:
            count[2]++
        }
    }
    for _, v := range count {
        fmt.Printf("%0.5f\n", float64(v)/float64(n))
    }
}
  1. 크기가 3인 배열을 만든다. 0번째 값은 양의 정수, 1번째 값은 음의정수, 0번째 값은 0을 카운트한다. go언어의 경우 변수를 선언하면 변수의 타입에따라서 기본 값이 설정된다. intger의 경우 0이다. 따라서 굳이 초기화 할 필요 없다.
  2. 배열의 크기만큼 루프를 돌린다.
  3. 입력값을 비교해서 카운트 한다.
  4. 카운트 한 값을 출력한다. float64로 형변환해서 출력한다.

python

#!/usr/bin/python
import sys

def minMax(n, ar):
    count=[0,0,0]
    for v in ar:
        if int(v) > 0:
            count[0]+=1
        elif int(v) < 0:
            count[1]+=1
        else:
            count[2]+=1
    for v in count:
        print('%0.5f' % (v/float(n)))

n = sys.stdin.readline()
a = sys.stdin.readline()
ar = a.split(' ')
minMax(n, ar)