매일매일 (Everyday)

[BOJ] - 1차원 배열 단계-(1) - Python

apdo 2021. 11. 26. 18:09

10818: 최소, 최대

# 10818: 최소, 최대
N = int(input())
numbers = list(map(int,sys.stdin.readline().split()))
print(min(numbers), max(numbers))

특별히 설명할게 없어서 그냥 넘어갈께요.

2562: 최댓값

# 2562: 최댓값
numbers = []
for _ in range(9):
    N = int(input())
    numbers.append(N)

print(max(numbers))
print(numbers.index(max(numbers))+1)

    ## 다른 풀이
a = [int(input()) for _ in range(9)]
print(max(a))
print(a.index(max(a))+1

저는 보통 위 답을 선호하는데 밑에 답이 간단해서 풀기에는 편하더라고요.

comprehension 방식인데 검색하면 자세한 설명이 나옵니다.

 

2577: 숫자의 개수

# 2577: 숫자의 개수
A = int(input())
B = int(input())
C = int(input())

z = str(A*B*C)
numbers = []

for i in range(len(z)):
    numbers.append(z[i])

numbers = list(map(int, numbers))

for j in range(10) :
    print(numbers.count(j))

'12345'.count(str(1)) # 너무 빙빙 돌아서 생각했던 것 같다. 숫자를 문자열로 바꾸고 count를 할 수 있다.

문자열 자체에서 인덱싱, 슬라이싱 하는걸 이 문제를 통해 처음 배웠어요. count 메소드 사용해서 셀 수 있다는 것도 알았습니다.

 

3052: 나머지

# 3052: 나머지
s = set([])
for _ in range(10):
    N = int(input())
    try :
        s.add(N % 42)
    except :
        continue
print(len(set))
# set - list 변경이 왜 오류가 뜰까, TypeError: 'list' object is not callable

nums = []
for _ in range(10):
    N = int(input())
    if N%42 not in nums :
        nums.append(N%42)

print(len(nums))

리스트의 원소들이 unique하게 구성하게끔 아이디어를 생각해보니까 수학에서 집합개념이 생각났습니다. 근데 set과 list로 변환하는 과정에서 계속 오류가 떴어요. 찾아봐도 원인 파악이 어려워서 다른 방식으로 접근했습니다.

 

1546: 평균

# 1546: 평균
import sys

N = int(input())
score = list(map(int,sys.stdin.readline().split()))
M = max(score)

new_score = []
for i in range(N):
    new_score.append(score[i] / M * 100)

print(sum(new_score)/len(new_score))

평균 = 변량들의 총합 / 변량의 총수

파이썬에서는 sum() / len()

numpy 라이브러리에서 numpy.mean()으로 주로 사용합니다.