Python

[백준-28114번] 팀명 정하기

고고잉93 2023. 11. 10. 20:36
728x90

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

 

28114번: 팀명 정하기

첫째 줄에 첫 번째 팀원이 백준 온라인 저지에서 해결한 문제의 개수 $P_1$, 입학 연도 $Y_1$, 성씨 $S_1$이 공백으로 구분되어 주어진다. 둘째 줄과 셋째 줄에는 두 번째 팀원의 정보 $P_2,Y_2,S_2$와 세

www.acmicpc.net

 

문제

성서의 가이드라인에 따르면 팀 이름을 짓는 방법은 두 가지가 있다.

  1. 세 참가자의 입학 연도를 100으로 나눈 나머지를 오름차순으로 정렬해서 이어 붙인 문자열
  2. 세 참가자 중 성씨를 영문으로 표기했을 때의 첫 글자를 백준 온라인 저지에서 해결한 문제가 많은 사람부터 차례대로 나열한 문자열

입력

 

예제 입력 1

600 2018 AHN
2000 2019 LEE
6000 2020 OH

예제 출력 1 

181920
OLA

예제 입력 2 

1000 2022 PARK
9000 2021 NAH
2000 2019 LEE

예제 출력 2 

192122
NLP





나의 풀이.

y=[]
m=[]
d=[]
for _ in range(3):
    Y,M,D=(input().split())
    y.append(int(Y))
    m.append(int(M))
    d.append(D)
a=''
m.sort()
for i in m:
    a+=str(i%100)
print(a)
b=''
yy=sorted(y)
for i in yy:
    f=y.index(i)
    b+=d[f][0]
B=b[::-1]
print(B)

 

문제해결수, 입사년도, 이름을 각각 다른 리스트에 넣어 분류했다...

난잡해보이고 가독성이 좋지 못하고 효율적이진 못한것같다...


 

 

pys = [input().split() for _ in range(3)]

print(''.join(sorted(y[-2:] for _, y, _ in pys)))
print(''.join(s[0] for _, _, s in sorted(pys, key=lambda x: -int(x[0]))))

 

제일 간결한 해답을 찾와봤는데 넘 단순하고 간결해서 보기도 좋았다...

-int(x[0])을 이용해서... 첫번째항을 기준으로 내림차순 정리.....

이후 join함수를 사용해서 문자열로 print

 

다른 풀이들도 sorted함수 속에 lambda함수를 사용하여 조건을걸고 그에따라 배열하여 도출하는 풀이가 대다수였다.

알아두도록하쟈

 

728x90