Plus Minus [hacker rank]

Kim Hayeon·2023년 4월 13일
0

Algorithm Study

목록 보기
1/37
post-thumbnail

SVB 알고리즘 스터디 시작!!!!
우리는 hacker rank의 3개월 키트를 하루에 한 문제 이상 풀기로 했다.
첫 번째 문제인 플러스 마이너스는 int로 구성된 array가 주어졌을 때, 양수, 음수, 0의 비율을 출력하는 문제다.

구체적인 문제는 다음과 같다.

Question.

Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero. Print the decimal value of each fraction on a new line with places after the decimal.

Note: This challenge introduces precision problems. The test cases are scaled to six decimal places, though answers with absolute error of up to are acceptable.

Example

There are elements, two positive, two negative and one zero. Their ratios are , and . Results are printed as:

0.400000
0.400000
0.200000

Function Description

Complete the plusMinus function in the editor below.

plusMinus has the following parameter(s):

  • int arr[n]: an array of integers

Print

Print the ratios of positive, negative and zero values in the array. Each value should be printed on a separate line with digits after the decimal. The function should not return a value.

Input Format

The first line contains an integer, , the size of the array.
The second line contains space-separated integers that describe .

Constraints

0 < n <= 100
-100 <= arr[i] <= 100

Output Format

Print the following lines, each to decimals:

  1. proportion of positive values
  2. proportion of negative values
  3. proportion of zeros

Sample Input

STDINFunction
6arr[] size n = 6
-4 3 -9 0 4 1arr = [-4, 3, -9, 0, 4, 1]

Sample Output

0.500000
0.333333
0.166667

풀이

#!/bin/python3

import math
import os
import random
import re
import sys

#
# Complete the 'plusMinus' function below.
#
# The function accepts INTEGER_ARRAY arr as parameter.
#

def plusMinus(arr):
    plus = 0
    minus = 0
    zero = 0
    n = len(arr)
    for i in range(len(arr)):
        if arr[i] > 0:
            plus += 1
        elif arr[i] < 0:
            minus += 1
        else:
            zero += 1
    print (round(plus/n,6))
    print(round(minus/n,6))
    print (round(zero/n,6))

if __name__ == '__main__':
    n = int(input().strip())

    arr = list(map(int, input().rstrip().split()))

    plusMinus(arr)

사실 어려운 문제는 아니라서 금방 풀 수 있었다. 소수점 이하의 자리 수를 조절하는 함수는 round(f, n)이고 parameter로 해당 숫자 f 와 소수점 이하 숫자의 갯수 n 을 넣어준다는 것을 기억하자!

profile
우리는 무엇이든 될 수 있어

0개의 댓글