Code&Data Insights

BaekJoon Algorithm - Stage 5 [ 4-7 ] ( Python 3 ) 본문

Algorithm/BaekJoon Online Judge

BaekJoon Algorithm - Stage 5 [ 4-7 ] ( Python 3 )

paka_corn 2022. 1. 15. 12:17

 

 

2022.01.15

 

# 1. Stage 5 - [1546] 

 

[my code]

 

n = int(input())
score = list(map(int,input().split()))

m = max(score)

new_score = []

sum = 0 
for i in range(n):
    new_n = (score[i]/m) * 100
    new_score.append(new_n)
    sum += new_score[i]
  
print(sum/n)

 

--> 짜면서 나름 맘에 들었다. 

array를 안써서 풀어도 되는 문제였던듯 

 

 

 

 

 

 

 

# 2. Stage 5 - [8958] 

 

[8958] OX quiz  - 다시 풀기

 

 

[my code]

 

n = int(input())
cnt = 0
sum = 0

for i in range(n):
    x = input()
    for j in range(len(x)):
        if (x[j] == 'o'):
            cnt += 1
            sum += cnt
        else:
            cnt += 0
            
    print(sum)

 

----> 앞뒤값을 비교한다고 생각했는데 for문 안에 넣어서 돌리니까 

값이 누적되서 점수가 나왔다. 
    

 

 

 

 

 

 

 

# 3. Stage 5 - [3052] 

 

나머지 문제

 

별짓을 다해도 안풀리더니..

set 함수를 써야되는거였다 ㅋㅋㅋ 

 

이거쓰니까 바로 풀림..! 

 

[my code]


arr = []

cnt = 0 

for i in range(10):
    a = int(input())
    new_a = a % 42 
    arr.append(new_a)

print(len(set(arr)))
        

 

 

** set() method **

 

set() method is used to convert any of the iterable to sequence of iterable elements with distinct elements, commonly called Set. Parameters : Any iterable sequence like list, tuple or dictionary. Returns : An empty set if no element is passed
    

쉽게말해 저장된 자료형의 중복을 제거해준다! 

(때문에 자료형의 중복을 제거하기위한 필터역할로 자주 쓰인다.) 

 

 

 

 

 

 

# 4. Stage 5 - [4344] 

[my code]

 

c = int(input())

for i in range(c):
    a = list(map(int,input().split()))

    sum = 0
    
    for j in range(1,len(a)):
        sum += a[j]
        
    count = 0 
    
    for k in range(1,len(a)):
        if a[k]>sum/a[0]:
            count +=1 
    
    print(str(round(((count/a[0])* 100),3))+"%")

 

 

---> 답은 맞게 구했는데 

첫번째 답이 40.0% 나와서 계속 틀리는 것 같았다. 

 

찾아보니 round 함수의 문제점인듯. 

 

그래서 

%.3f % (value)로 계산하고, 끝에 %붙이려고 str으로 바꿨다.

++ format 메소드를 활용하는 방법도 있음 ! 

코드가 좀 정신없는 것 같은데

이건 차차 고쳐보자

첨부터 욕심내지말고..!

 

 

[new code]

 

c = int(input())

for i in range(c):
    a = list(map(int,input().split()))

    sum = 0
    
    for j in range(1,len(a)):
        sum += a[j]
        
    count = 0 
    
    for k in range(1,len(a)):
        if a[k]>sum/a[0]:
            count +=1 
    
    
    
    print(str('%.3f' % ((count/a[0])* 100)) +"%")

 

 

 

 

( 으아 점점 어려워진다..! )

 

 

 

 

 

 

 

 

 

 

Comments