190107 백준 알고리즘 문제풀기
07 Jan 2019 | baekjoonBaekjoon 알고리즘 문제풀기
[10817] 세 수
문제
-
세 수를 입력받아 두 번째로 큰 수를 출력
-
파이썬
sorted(list)
를 활용하면 쉽게 풀 수 있다.
정답
a = map(int, input().split())
print(sorted(a)[1])
[10871] X보다 작은 수
문제
- 정수 N개로 이루어진 수열 A와 정수 X가 주어질 때, A에서 X보다 작은 수를 모두 출력
정답
a = list(map(int, input().split()))
nums = list(map (int, input().split()))
ver = a[1]
for j in range(0, a[0]):
if nums[j]<ver:
print("%d "%nums[j], end="")
print("")
[1546] 평균
문제
- 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점으로 재환산
- 환산된 점수들에 대한 평균 출력
- 첫 줄에는 과목 수, 둘째 줄에는 점수들 입력
정담
a = int(input())
nums = list(map (int, input().split()))
maxval = float(sorted(nums)[a-1])
avg = 0.0
for j in range(0, a):
avg += float(float(nums[j])/maxval*100.0)
print(avg/a)
[4344] 평균은 넘겠지
문제
-
총 케이스 횟수를 입력받고 해당 케이스에 대해 학생 수와 그 점수를 입력받은 후, 평균을 구해 평균을 넘는 인원 비율을 출력
-
%
를 출력할때는%%
로 적어야 한다.
정답
num_case = int(input())
avg = 0.0
cnt = 0
for i in range(0, num_case):
a = list(map(int, input().split()))
for j in range(1, a[0] + 1):
avg += float(a[j])
avg /= float(a[0])
for j in range(1, a[0] + 1):
if float(a[j])>avg:
cnt += 1
percent = float(cnt)/float(a[0])*100.0
print('%0.3f%%'%percent)
avg = 0.0
cnt = 0
[1110] 더하기 사이클
문제
- 0보다 크거나 같고, 99보다 작거나 같은 정수가 N이 주어짐
- 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더함
- 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만듦
- 위 과정을 반복 할 때, 처음 입력된 수가 나오게 되는 연산의 횟수를 출력
정답
a = str(input())
if len(a)<2:
a = "0" + a
a_ori = a
cnt = 0
while True:
a0 = a
a = str(int(a[0]) + int(a[1]))
if len(a)<2:
a = "0" + a
a = a0[1]+a[1]
cnt += 1
if a == a_ori:
print(cnt)
break
[4673] 셀프 넘버
문제
- 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수 (ex. d(75) = 75+7+5 = 87)
- n은 d(n)의 생성자
- 생성자가 없는 숫자를 셀프 넘버
-
10000보다 작거나 같은 셀프 넘버를 출력하는 프로그램을 작성
list()
에 값을 추가할때는list.append(내용)
을 사용한다.
정답
def d_n(a):
add_num = 0
for j in range(0, len(a)):
add_num += int(a[j])
result = str(int(a) + int(add_num))
return result
result = []
for j in range(1, 10001):
result.append(d_n(str(j)))
for j in range(1, 10001):
if not str(j) in result:
print(j)