📍In a nutshell...
세 개의 자연수를 입력받고, 모두 곱해서 나온 값의 각 숫자 개수를 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)
출처: 백준