Posts Plus Minus (Python 3)
Post
Cancel

Plus Minus (Python 3)

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 6 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 10^-4 are acceptable.

  • Example

    • arr = [1,1,0,-1,-1]
    • There are n = 5 elements, two positive, two negative and one zero. Their ratios are 2/5 = 0.400000, 2/5 = 0.400000 and 1/5 = 0.200000. Results are printed as:
1
2
3
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 6 digits after the decimal. The function should not return a value.
  • Input Format
    • The first line contains an integer, n, the size of the array.
    • The second line contains n space-separated integers that describe arr[n].
  • Constraints
    • 0 < n <= 100
    • -100 <= arr[i] <= 100
  • Output Format
    • Print the following 3 lines, each to 6 decimals:
      1. proportion of positive values
      2. proportion of negative values
      3. proportion of zeros

문제풀이

  • 주어진 arr에서 음수, 양수, 0을 확인하고 전체 갯수를 음수, 양수, 0의 갯수로 나눈 값을 출력하기
  • for문을 돌면서 음수면 음수,양수면 양수 등 할수있으나, fillter 함수와 lambda 함수를 통해 양, 음, 0을 더 빠르게 확인.
  • fillter 후에 list시키고 그 갯수(len)만큼 나누는 코드를 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import math
import os
import random
import re
import sys

# Complete the plusMinus function below.
def plusMinus(arr):
    print(round(len(list(filter(lambda x : x > 0, arr))) / len(arr), 6))
    print(round(len(list(filter(lambda x : x < 0, arr))) / len(arr), 6))
    print(round(len(list(filter(lambda x : x == 0, arr))) / len(arr), 6))

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

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

    plusMinus(arr)
1
2
3
4
5
6
7
 6
 -4 3 -9 0 4 1


0.5
0.5
0.5
This post is licensed under CC BY 4.0 by the author.