본문 바로가기
Programming/Python

[BAEKJOON] 백준 Python 4단계 1차원 배열 10818번 / 2562번 / 2577번 / 최소,최대 / 최댓값 / 숫자의 개수

by EunjiBest 2022. 4. 14.

[BAEKJOON] 백준 Python 4단계 1차원 배열 10818번 / 2562번 / 2577번 / 최소,최대 / 최댓값 / 숫자의 개수

 

 

10818번(최소, 최대)

 

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

입력 : 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

출력 : 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

 

첫 번째 배열 문제이다.

list로 input을 할 줄 아느냐, min과 max함수를 사용할줄 아느냐를 묻는 문제인 것같다.

 

1. 정수 N을 input()

2. list로 N만큼 input()

3. min, max출력

 

답 : 

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

 

1번문제는 무난하게 통과!

 

 

 

 

 

2562 (최댓값)

 

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

입력 : 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력 : 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.

 

10818번에서는 리스트를 한 줄에 모두 받았다면,

이번에는 한 줄에 하나씩 받는다.

 

input을 9번 출력하는 코드를 써도 되겠지만

반복문을 배웠으니 for문을 써서 코드를 줄여보기로 하자.

 

1. 9번 돌아가는 for문을 만든다.

2. for문안에 자연수 N을 input한다.

3. N을 빈 리스트에 채운다.

4. 최댓값을 출력한다.

5. 리스트에서 최댓값이 몇 번째 수인지 출력한다.

 

N_list = []

for i in range(9):
  N = int(input())
  N_list.append(N)


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

 

이 문제에서 알아야할 list 관련 함수는

append : 리스트 요소 추가하기

max : 리스트의 최댓값

index : 리스트 위치 반환

이다.

 

list의 위치는 0부터 시작하기 때문에

마지막 코드에 +1을 붙여주어야 한다.

 

 

 

 

 

2557번(숫자의 개수)

 

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.


입력 : 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

출력 : 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.

 

list 요소의 숫자 갯수를 구하는 count를 사용하는 문제이다.

 

 

1. A,B,C를 각각 input한다.

2. AXBXC를 곱한다.

3. 2번의 값을 list로 만든다.

4. 10번 돌아가는 for문을 만든다.(0~9까지)

5. i번째 수가 몇번 나오는지 카운트한다.

 

A = int(input())
B = int(input())
C = int(input())
mul = list(str(A*B*C))

for i in range(10):
  print(mul.count(str(i)))

 

int를 list로 만들고 싶다면,

str로 바꾼뒤 list로 변환해야한다.

 

count는 list 요소의 갯수를 구해준다.

 

 

 

오늘도 모닝코딩..!

 

이렇게해서 1차원 배열 문제 3개를 풀어보았다.

나도 다 외우고 푸는 것이 아니라

문제를 보고 이런 함수가 있었던 것같은데? 이름이 뭐였더라?

이런식으로 구글링하며 찾아푼다.ㅎㅎ

 

여러번 문제를 풀다보면 자동으로 외워지겠지~ㅎ

 

 

 

 

 

 

 

 

 

 

반응형

댓글