[백준 | 파이썬] 와글와글 숭고한

devheyrin·2022년 2월 9일
0

codingtest

목록 보기
8/65

문제

숭고한 알고리즘 캠프가 다가오고 있고 방학이 되어서까지도 각 대학들의 협업은 계속되고 있다. 그럼에도 불구하고 운영진들과 강사진들이 각자의 일정 때문에 바빠 계획에 차질이 조금씩 생기고 있다. 숭고한 알고리즘 캠프의 대표인 창호는 효율적인 일처리를 위해 엄정한 평가를 내리기로 하였다.

창호는 숭고한 알고리즘 캠프의 구성원인 숭실대학교(Soongsil University), 고려대학교(Korea University), 한양대학교(Hanyang University)의 참여도를 수치화하였다. 창호가 보기에 세 대학교의 참여도의 합이 100 이상이면 일처리가 잘 되고 있기에 안심할 수 있지만, 100 미만이면 창호는 참여도가 가장 낮은 대학의 동아리에게 무언의 압박을 넣을 예정이다. 숭고한 알고리즘 캠프의 성공을 빌며 창호의 고민을 해결해주자.

입력

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

세 대학의 참여도는 모두 다르다.

출력

첫 번째 줄에 일처리가 잘 되고 있어 무언의 압박이 필요가 없으면 (따옴표를 제외하고) “OK”를 출력한다.

그 외에는 첫 번째 줄에 무언의 압박이 필요한 동아리가 속한 대학의 영문 이름의 첫 단어를 출력한다. 영문 이름 표기는 지문에 나온 것을 따른다.

예제 입력 1

31 41 59

예제 출력 1

OK

예제 입력 2

1 2 3

예제 출력 2

Soongsil

예제 입력 3

19 8 9

예제 출력 3

Korea

예제 입력 4

45 33 21

예제 출력 4

Hanyang

Solution 1

s, k, h = map(int, input().split())
total = s+k+h

if total >= 100:
    print('OK')
else:
    univ = {'Soongsil': s, 'Korea': k, 'Hanyang': h}
    univ_sorted = sorted(univ.items(), key=lambda x: x[1])
    print(univ_sorted[0][0])
  • 풀이 설명 세 숫자를 합해서 100 미만인 경우
    1. s, k, h 를 value로 하고, 학교 이름을 key로 하는 딕셔너리를 만든다

    2. value를 기준으로 정렬하기 위해 lamda를 사용한다

      1. 여기서 lambda 를 아직 제대로 이해 못했다는 것을 깨달았다!

        sorted메소드의 key라는 매개변수에는 무엇을 기준으로 정렬할 것인지를 넣어주면 된다. 여기에서는 딕셔너리의 '값'을 기준으로 정렬할 것이므로, 값을 구하는 람다식을 넣어주면 된다.

        univ.items() 가 반환하는 형태는 다음과 같다.

        dict_items([('Soongsil', 19), ('Korea', 8), ('Hanyang', 9)])

        여기에서 우리가 사용할 것은 각 튜플마다 두 번째에 위치한 값, 즉 인덱스 1에 해당하는 'value'이므로 이를 람다식으로 표현하면

        lamda x: x[1] 이 된다.

        즉 key=lambda x: x[1] 은 값을 기준으로 정렬하라는 의미가 된다!

      1. sorted함수는 다음과 같은 리스트를 반환하므로, 첫 번째 튜플의 첫 번째 인덱스를 출력해야 가장 작은 값을 가진 학교명을 출력할 수 있다.
      [('Hanyang', 1), ('Korea', 10), ('Soongsil', 20)]
profile
개발자 헤이린

0개의 댓글