크게 어려운 문제는 아닌 구현 문제이지만 이렇게 정리해서 올리는 이유는 반성을 위해서이다.

우선 내가 짠 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
num = list(map(int, sys.stdin.readline().split()))
count = len(num)
total = 0
for i in num:
    total = total + i
if total >= 100:
    print("OK")
else:
    if min(num) == num[0]:
        print("Soongsil")
    elif min(num) == num[1]:
        print("Korea")
    else:
        print("Hanyang")
cs

스스로 푼 것에 대해서 나름 뿌듯해하고 있었다. sys를 사용하기도 했고, 계속 햇갈리던 여러 값을 입력받기도 제대로 스스로 해내었기 때문이다.

그런데 알고보니 훨씬 코드를 짧게 쉽게 짤 수 있는 방법 있음을 알게 되었다.

그리고 그 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
a, b, c = map(int, input().split())
if a + b + c >= 100:
    print('OK')
else:
    if a<and a<c:
        print('Soongsil')
    elif b<and b<c:
        print('Korea')
    else:
        print('Hanyang')
cs

어느 것이 사실 더 간단한지는 모르겠지만, 내 눈에는 아래 것이 훨씬 간단해보였다.

만약 코딩테스트였다면 왠지 모르게 아래 것이 훨씬 빠르게 짤 것 같기는 하다.

아무튼 둘 다 잘 돌아가는 코드이고, 어느게 맞다 틀리다는 없긴 할테니 두 가지의 방법을 모두 알아두면 좋을 것 같긴 하다.

 

출처: https://www.acmicpc.net/problem/17388

 

17388번: 와글와글 숭고한

첫 번째 줄에 숭실대학교의 참여도, 고려대학교의 참여도, 한양대학교의 참여도를 의미하는 세 자연수 S, K, H가 공백으로 구분되어 주어진다. (0 ≤ S, K, H ≤ 100) 세 대학의 참여도는 모두 다르다.

www.acmicpc.net

 

+ Recent posts