알고리즘 문제 풀기 - 1

항해99를 대비하여 항해99 2주차의 알고리즘 문제를 검색해보니 나왔다.

그래서 각 문제들을 한번씩 풀어보려고 한다.

언어는 파이썬으로 하기로 했다.

 

출처 : https://leedaeho1188.tistory.com/34

 

항해 99 2주차 알고리즘 [WIL]

2주차 알고리즘 항해99 2주차는 알고리즘을 공부하는 주간이다. 3주차까지 포함하여 총 2주동안 알고리즘에대해서 전혀 몰랐던 사람도 2주 후에는 코딩테스트 시험을 보고 통과 할 수 있도록 만

leedaeho1188.tistory.com

 

 

정리

문제 1. (10869) 사칙연산

https://www.acmicpc.net/problem/10869

 

10869번: 사칙연산

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

www.acmicpc.net

+ ) 나누기 빼고는 int 할 필요 없는데 귀찮아서 짯던 코드 그대로 올림. 통과만 하면 장땡이니까~

if __name__ == "__main__":
    a = input().split()
    b = int(a[0])
    c = int(a[1])
    print(int(b+c))
    print(int(b-c))
    print(int(b*c))
    print(int(b/c))
    print(int(b%c))

 

문제 2. (2588) 곱셈

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

 

if __name__ == "__main__":
    a = int(input())
    b = input()

    print(a * int(b[2]))
    print(a * int(b[1]))
    print(a * int(b[0]))
    print(a * int(b))

 

문제3. (2884) 알람 시계

 

https://www.acmicpc.net/problem/2884

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net

상근이 참 힘들게 산다

if __name__ == "__main__":
    data = input().split()
    h = int(data[0])
    m = int(data[1])

    if (m >= 45):
        m = m - 45
    else:
        h = h - 1
        m = 60 - (45 - m)

    if (h == -1):
        h = 23

    print(h, m)

 

문제4. (1110) 더하기 사이클

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

이때부터는 귀찮아서 메인함수 안씀!

origin_data = input()
after_data = origin_data
count = 0

while(True):
    if (len(after_data) < 2):
        x = 0
        y = int(after_data[0])
    else:
        x = int(after_data[0])
        y = int(after_data[1])

    z = x + y
    z = str(z)
    if (len(z) >= 2):
        z = z[1]
    after_data = str(y) + str(z)

    count += 1
    if (int(after_data) == int(origin_data)):
        break

print(count)

 

문제5. (4344) 평균은 넘겠지

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

 

# Input Time
num_case = int(input())
data_input = []

for x in range(num_case):
    data_input.append(input())

# Run Time
for x in range(num_case):
    data = data_input[x].split()
    num_students = int(data[0])
    num_points = 0
    for y in range(1, len(data)):
        z = int(data[y])
        num_points += z
    avg = int(num_points / num_students)
    best_students = 0
    for y in range(1, len(data)):
        z = int(data[y])
        if (avg < z):
            best_students += 1
    
    percent = best_students / num_students * 100
    print(str(format(round(percent, 3), ".3f"))+"%")

 

 

휴 오늘은 여기까지...

 

새로 알게 된 것

round는 반올림 함수.

format은 글자의 포맷을 맞춰준다.

'Algorithm' 카테고리의 다른 글

알고리즘 문제 풀기 - 3  (0) 2022.04.13
알고리즘 문제 풀기 - 2  (0) 2022.04.12

+ Recent posts