190107 백준 알고리즘 문제풀기

|

Baekjoon 알고리즘 문제풀기

[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)