문제
정수값들로 이루어진 리스트 arr와 그 길이 n가 주어진다.(단, -100≤arr[i]≤100, 0≤n≤100) 리스트 내 양수, 음수, 0의 구성비를 구하여 차례로 출력한다. 단, 소수 여섯번째 자리까지 출력한다.
Sample Input :
6
-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
def plusMinus(arr):
plus=[] # 양수 들어갈 리스트
minus=[] # 음수 들어갈 리스트
zero=[] # 0 들어갈 리스트
for num in arr:
if num > 0: # 0보다 클 경우 양수 리스트에
plus.append(num)
elif num < 0: # 0보다 작을 경우 음수 리스트에
minus.append(num)
else: # 나머지는 0 리스트로
zero.append(num)
n1 = '%.6f' % (len(plus) / n) # 전체 양수 갯수/숫자 갯수를 소수 6번째 자리까지 표시
n2 = '%.6f' % (len(minus) / n) # 전체 음수 갯수/숫자 갯수를 소수 6번째 자리까지 표시
n3 = '%.6f' % (len(zero) / n) # 전체 0 갯수/숫자 갯수를 소수 6번째 자리까지 표시
return n1, n2, n3
if __name__ == '__main__':
n = int(input())
arr = list(map(int, input().rstrip().split()))
answer = plusMinus(arr)
print(answer[0]) # 튜플을 첫 번째부터 하나씩 출력
print(answer[1])
print(answer[2])
Comment: list와 if문을 활용하면 쉽게 풀 수 있는 문제입니다. 양수, 음수, 0에 해당하는 리스트의 값들을 if 문으로 나눠서 별개의 리스트를 생성한 후, 각 리스트들의 길이를 전체 리스트의 길이 n으로 나누면 답을 구할 수 있습니다.
'Algorithm > HackerRank' 카테고리의 다른 글
[HackerRank]Birthday Cake Candles(풀이 성공) (0) | 2021.02.01 |
---|---|
[HackerRank]Diagonal Difference(풀이 성공) (0) | 2021.01.28 |
[HackerRank]Compare the Triplets(풀이 성공) (0) | 2021.01.16 |
[HackerRank]Mini-Max Sum(풀이 성공) (0) | 2021.01.06 |
[HackerRank] Staircase(풀이 성공) (0) | 2020.12.31 |