본문 바로가기
짜잘IT

22.08.14. 백준풀이

by 정람지 2022. 8. 14.

<2562번 최댓값>

from sys import stdin 
Nlist=[]
result = 0
resultNum = 0
for i in range(9):
    K = int(stdin.readline())
    Nlist.append(K)
for i in range(9):
    if Nlist[i] > result:
        result = Nlist[i]
        resultNum = i+1
print(result)
print(resultNum)

성공이지만 길다

int(input) 을 append 안에 넣을 수 있다

굳이 비교 안 하고! max로 찾을수있는걸 까먹

리스트이름.index()로 인덱스 번호 얻을 수 있다.

from sys import stdin 
Nlist=[]
for i in range(9):
    Nlist.append(int(stdin.readline()))
print(max(Nlist))
print(Nlist.index(max(Nlist))+1)

<1546번 평균>

 

from sys import stdin 
N=int(stdin.readline())
Nlist=list(map(int,stdin.readline().split()))

for i in range(N):
    K = Nlist[i]/max(Nlist)*100
    Nlist[i] = K
print(Nlist)

result = 0
for i in range(N):
    result += Nlist[i]
result = result/N
print(result)

이건 틀렸다. 왜 틀렸냐면!

포문 안에 max()가 있기 때문에 max(Nlist)의 값이 매번 바뀐다....!

반복문 안에 고정되어야 할 값이 들어있진 않은지 유의하자

from sys import stdin 
N=int(stdin.readline())
Nlist=list(map(int,stdin.readline().split()))
Max = max(Nlist)

for i in range(N):
    K = Nlist[i]/Max*100
    Nlist[i] = K

result = 0
for i in range(N):
    result += Nlist[i]
result = result/N
print(result)

성공 

여기선 반복문으로 평균을 처리했는데 sum()을 쓸 수 도 있다.

math랑 numpy 모듈을 사용할 수도 있다. 근데 이거는 numpy를 따로 설치해야 해서 돌려볼 수는 없었다

from sys import stdin 
N=int(stdin.readline())
Nlist=list(map(int,stdin.readline().split()))
Max = max(Nlist)
for i in range(N):
    K = Nlist[i]/Max*100
    Nlist[i] = K

# sum() 평균
print(sum(Nlist)/N)
# Numpy 평균
import math
import numpy

from sys import stdin 
N=int(stdin.readline())
Nlist=list(map(int,stdin.readline().split()))
Max = max(Nlist)
for i in range(N):
    K = Nlist[i]/Max*100
    Nlist[i] = K

# Numpy 평균
num_mean = numpy.mean(Nlist)
print(num_mean)

<8958번 OX퀴즈>

 

숫자형 대신 문자열을 하나씩 쪼개 리스트에 넣고 싶을 때에는.  Nlist=list(stdin.readline())

Nlist=list(stdin.readline())
from sys import stdin 
N=int(stdin.readline())
for i in range(N):
    Nlist=list(stdin.readline())
    result = 0
    preResult = 0
    for cha in Nlist:
        if cha == "O":
            preResult += 1
            result += preResult
        else:
            preResult = 0
    print(result)

성공~

 

    result = 0
    preResult = 0

    result, preResult = 0, 0

 

으로 해도 된다.


<4344번 평균은 넘겠지>

 

meanNum = sum(Nlist)/len(Nlist) 평균 구하는 형식~

meanNum = sum(Nlist)/len(Nlist)

round(숫자, 자릿수)

소수점 제한 함수

 

주의!!!!

각 줄 첫번째는 학생 수이므로 꼭 빼고 계산해야 함!!!! 

리스트이름[1:] 사용

from sys import stdin 
N=int(stdin.readline())
for i in range(N):
    Nlist=list(map(int,stdin.readline().split()))
    meanNum = sum(Nlist[1:])/Nlist[0]
    overStudent = 0
    for k in range(Nlist[0]):
        if Nlist[k+1] > meanNum:
            overStudent += 1 
    result = round(overStudent/Nlist[0]*100 , 3)
    print("{0}%".format(result))

성공~인줄알았는데 안됨

아무래도 소수점 자리가 0일 경우에는 소수점 3개 자리가 000이 아닌 0이 나오는 것이 문제인 듯하다.

 

round 대신 format 을 써야 할 듯하다.

https://ming-jee.tistory.com/124

 

[Python3 문법] format을 이용해서 소수점 이하 자릿수 표현하기

새벽에 알고리즘 문제 풀어보다가 시간초과 나서 머리 좀 식힐 겸, 파이썬 문법 연습 좀 할 겸 백준에서 안 풀어본 브론즈 문제 중에 하나를 골라서 풀어보았다. 4344. 평균은 넘겠지 (문제 링크: w

ming-jee.tistory.com

format 어려월

from sys import stdin 
N=int(stdin.readline())
for i in range(N):
    Nlist=list(map(int,stdin.readline().split()))
    meanNum = sum(Nlist[1:])/Nlist[0]
    overStudent = 0
    for k in range(Nlist[0]):
        if Nlist[k+1] > meanNum:
            overStudent += 1 
    result = round(overStudent/Nlist[0]*100 , 3)
    
    print(f'{result:.3f}%')
    #print("{:.3f}%".format(result))

끗 

1차원 배열까지 완료~

 

'짜잘IT' 카테고리의 다른 글

22.08.27 백준풀기  (0) 2022.08.27
22.08.21 백준풀기, 개미수열  (0) 2022.08.15
22.08.13 백준풀기  (0) 2022.08.13
22.08.12 백준풀기  (0) 2022.08.12
22.08.11 백준풀기  (0) 2022.08.11