본문 바로가기
Baekjoon

[1차원 배열] 파이썬으로 해결하기

by ★☁︎♣︎♥︎ 2022. 4. 13.
728x90
반응형
안녕하세요! CodingLog의 우동이입니다.
이번 시간에는 파이썬으로 백준 공부하기입니다.

단계 문제 번호 제목 티어
1 10818 최소, 최대 Bronze 3
2 2562 최댓값 Bronze 2
3 2577 숫자의 개수 Bronze 2
4 3052 나머지 Bronze 2

10818.

첫째 줄에 정수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다.

정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

# 최소, 최대

n = int(input())

m = list(map(int,input().split()))
print(min(m),max(m))

기본 내장 함수인 min, max를 사용하면 됩니다.

리스트에 있는 데이터의 최솟값과, 최댓값을 알아서 가져오는 참 좋은 함수입니다.

2562.

첫째 줄부터 아홉 번째 줄까지 한 중에 하나의 자연수가 주어지는데 그중에 최댓값과 몇 번째 수인지 찾는 문제입니다.

# 최댓값

max = int(-999)

for i in range(1,10):
    n = int(input())
    if max <= n:
        max = n
        max_i = i;
print(max)
print(max_i)

이렇게 하는 방식도 있지만, 파이썬 내장 함수 중에 index라는 것을 써서 max의 값과 일치하는 번지수를 가져오는 함수가 있습니다.

# 최댓값

data = []
for i in range(9):
    data.append(int(input()))
print(max(data))
print(data.index(max(num_list))+1)

2577.

숫자 A, B, C를 입력받고 0이 몇 번 쓰였는지 출력하고, 다음 출력은 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 출력하는 문제입니다.

# 숫자의 개수

a = int(input())
b = int(input())
c = int(input())
sum = a * b * c
number_list=[0]*9
while sum!=0:
    data = sum % 10
    sum = sum // 10
    for i in range(10):
        if i==data:
            number_list[i]+=1
for i in range(10):
    print(number_list[i])

data는 곱한 값의 1의 자릿수이다.

이후 sum은 //를 처리하면 나머지를 버리고 데이터를 넣는다.

이후 0~9중에 data와 값이 같으면 number_list[i]번지수에 데이터를 1을 더해준다.

 

다른 방법

# 숫자의 개수

a = int(input())
b = int(input())
c = int(input())

number_list = list(str(a * b * c))
for i in range(10):
    print(number_list.count(str(i)))

리스트에 문자열로 곱한 값을 넣어주고

count : 문자가 몇 개씩 있는지 확인하는 함수

count를 사용해 str(i)의 값과 같은 것을 출력해주면 됩니다.

3052.

10개의 숫자를 입력받고 42로 나누었을 때, 서로 다른 나머지를 구하는 문제입니다.

# 나머지

data = [0]*10
for i in range(10):
    n = int(input())
    data[i] = n%42
data_set = set(data)
print(len(data_set))

 

set : 중복되는 데이터 제거

10개의 데이터중 나머지가 같은 것은 지우고 data_set의 문자열 길이를 출력해주면 됩니다.

 

728x90
반응형

댓글