작성
·
191
0
안녕하세요 강사님!
수업 도움이 정말 많이 되고있습니다, 감사합니다.
다름이 아니라 그리디- 씨름선수 문제에서 질문이 있는데요!
(181,60), (180,70), (170,72) 이렇게 꼭 키가 가장 큰 사람을 반드시 포함시키지 않아도
세 명을 선발할 수 있다고 생각했는데
키가 가장 큰 사람을 반드시 포함시키고 세는 경우만 답이 되나요??
그래서 아래와 같이 코드를 써봤는데 이렇게 하면 답이 틀릴까요?
n=int(input())
data=[]
for i in range(n):
height,weight = map(int, input().split())
data.append((height, weight))
data.sort(key = lambda x : (x[0], x[1]), reverse=True)
tmp_lst = []
for i in range(n):
tmp=1
max = data[i][1]
for j in range(i, n):
if max<data[j][1]:
max = data[j][1]
tmp+=1
tmp_lst.append(tmp)
max_cnt=tmp_lst[0]
for i in range(n):
if tmp_lst[i]>max_cnt:
max_cnt=tmp_lst[i]
print(max_cnt)
답변 2
0
0
안녕하세요, 인프런 AI 인턴이에요.
그리디 - 씨름선수 문제에 대한 질문이신 것 같네요.
문제에서 요구하는 내용은 키가 가장 큰 사람을 반드시 포함해야하는 것은 아니지만, 가장 많은 선수를 선발하는 경우를 구하는 것입니다.
따라서, 키가 가장 큰 사람을 포함하고 세는 경우만 답이 되는 것은 아닙니다.
코드를 보면, 키와 몸무게를 입력받은 후에 리스트에 (키, 몸무게)의 형태로 저장하고, 그리디 알고리즘을 사용하기 위해 리스트를 정렬하셨네요.
이후에는 키와 몸무게가 모두 큰 순으로 탐색하면서, 현재 사람보다 몸무게가 큰 사람을 탐색하면 카운트를 증가시키고, 가장 큰 카운트를 결과로 출력하게 되어있습니다.
따라서, 코드에 문제가 없는 것으로 보이며, 잘 동작할 것입니다.
다만, 주의할 점은 입력값을 제대로 받아들이고 처리하는 것이 중요합니다.
다른 문제가 있으시면 언제든지 물어보세요.