[python 기초]백준: 1차원 배열 1 (2577,3052,1546) / 배열, 리스트 내포 복습
배열 관련 문제를 풀고, 리스트 내포도 다시 한번 활용해보자.
📍In a nutshell...
- for문을 활용해서 list 형태 변수에 값을 넣을 수 있다
- 입력값을 복수로 받아서 list함수 사용하려면 list로 변환하는 것 잊지 말기
- list comprehension(리스트 내포) 활용하기
세 개의 자연수를 입력받고, 모두 곱해서 나온 값의 각 숫자 개수를 1~9까지 차례대로 출력하는 문제다. key point는 자연수 3개 곱한 값을 개별 숫자로 쪼개는 것이다.(str()
,int()
활용)
a = int(input())
b = int(input())
c = int(input())
mul = a*b*c
for a in str(mul): #mul값을 문자로 변환 후, 개별 정수로 쪼개 list에 담는다.
new_mul = []
new_mul.append(int(a))
for i in range(10): #0부터 9까지 각 숫자의 개수를 차례대로 출력
print(new_mul.count(i))
여기서 list comprehension을 문자로 사용하면 문자형->정수형 변환 및 append()
가 한번에 처리된다.
a = int(input())
b = int(input())
c = int(input())
mul = a*b*c
result = [int(a) for a in str(mul)] #list comprehension 이용. 변수명은 result로 바꿈.
for i in range(10):
print(result.count(i))
개별 정수로 쪼개서 list에 담는 것은 구글링해서 힌트를 얻었다. (출처:stakeoverflow)
#3052번
수 10개를 입력받은 뒤, 이를 각각 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 문제다. 서로 다른 값만 남기려면 list()
과 set()
을 활용하면 된다.
lst = []
for i in range(10):
lst.append(int(input()))
lst[i] % 42
new_lst = set(lst) #set()으로 변환해 중복값 제거
print(len(new_lst))
#1546번
첫째 줄에는 시험 과목 개수, 둘째 줄에는 각 과목 별 점수를 입력한다. 그리고 나서 점수 중 최대값 M을 골라, 점수/M*100으로 고친다. 이 때 새롭게 구해진 평균을 출력하면 된다.
N = int(input())
score = lst(map(int,input().split()))
M = max(score) #score[] 중 최대값
new_score = [score[i]/M*100 for in range(N)] #new_score[] 생성 (list comprehension 형태)
new_average = sum(new_score)/len(new_score) #새로운 평균
print(new_average)
출처: 백준
Author And Source
이 문제에 관하여([python 기초]백준: 1차원 배열 1 (2577,3052,1546) / 배열, 리스트 내포 복습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mquat/python-기초백준-1차원-배열257730521546-배열-리스트-내포-복습저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)