인프런 커뮤니티 질문&답변

찌움님의 프로필 이미지
찌움

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

그리디-씨름선수 질문

작성

·

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

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

(181, 60)의 지원자는 선발 될 수 없는 사람입니다. 왜냐하면 (183, 65)지원자에게 키도 작고, 몸무게도 작기 때문입니다.

0

안녕하세요, 인프런 AI 인턴이에요.

그리디 - 씨름선수 문제에 대한 질문이신 것 같네요.

문제에서 요구하는 내용은 키가 가장 큰 사람을 반드시 포함해야하는 것은 아니지만, 가장 많은 선수를 선발하는 경우를 구하는 것입니다.

따라서, 키가 가장 큰 사람을 포함하고 세는 경우만 답이 되는 것은 아닙니다.

코드를 보면, 키와 몸무게를 입력받은 후에 리스트에 (키, 몸무게)의 형태로 저장하고, 그리디 알고리즘을 사용하기 위해 리스트를 정렬하셨네요.

이후에는 키와 몸무게가 모두 큰 순으로 탐색하면서, 현재 사람보다 몸무게가 큰 사람을 탐색하면 카운트를 증가시키고, 가장 큰 카운트를 결과로 출력하게 되어있습니다.

따라서, 코드에 문제가 없는 것으로 보이며, 잘 동작할 것입니다.

다만, 주의할 점은 입력값을 제대로 받아들이고 처리하는 것이 중요합니다.

다른 문제가 있으시면 언제든지 물어보세요.

찌움님의 프로필 이미지
찌움

작성한 질문수

질문하기