• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

set()함수를 왜 쓰는지 이해가 안됩니다 ㅜㅜ

20.12.26 21:14 작성 조회수 156

1

안녕하세요 강사님 강의 잘 듣고 있습니다.

코딩공부를 시작한지 별로 안되서 이상한것에 이해가 잘 안됩니다...

이해가 안되는 부분은 왜 굳이 set() 함수를 써야 하는지 입니다. (리스트를 써도 될거 같은데)

n, k = map(int, input().split())

a = list(map(int, input().split()))

res=[]

for i in range(n):

    for j in range(i+1, n):

        for m in range(j+1, n):

            res.append(a[i]+a[j]+a[m])

res.sort(reverse=True)

print(res[k-1])

여기서 강의에서 중복 카운팅을 막기 위해서 set() 집합을 쓴다고 하셨는데 그게 이해가 안됩니다..

10개의 카드에서 3개를 뽑아서 나오는 모든 경우의 수를 res 변수에 넣는걸로 알고 있는데 그러면 3개를 뽑아서 합한 결과가 res

변수에 들어가는데 이때 값이 똑같은게 나오면 중복이 안되게 막는다는걸로 들었습니다.

근데 굳이 res변수에 들어가는 중복 값을 왜 막아야 하는지 모르겠습니다..

10개의 카드에서 3개를 뽑고 다른 경우에서 3개를 뽑았는데 우연히 중복값이 나오면 그건 상관이 없는거 아닌가요?

문제에서 "같은 숫자의 카드가 여러개 있을 수 있다"란 말은 그냥 1부터 100까지의 숫자가 랜덤으로 있다했지만 1이 10개 있을 수도 있고 그런말이라서 위의 경우랑은 별개인거 같습니다.

말이 좀 횡설수설한데 제가 이해 안되고 있는 부분이 어디인지 알려주십시오..!

만약 제 글을 이해 못하시겠으면 다시 써보겠습니다...... ㅠㅠㅠ

답변 2

·

답변을 작성해보세요.

0

wlsrb7577님의 프로필

wlsrb7577

2020.12.27

감사합니다..!

문제를 제대로 읽어야 했었네요 반성하고 갑니다..

0

안녕하세요^^

문제에서 K번째 큰수가 누구라고 했는지 잘 읽어보세요.

위에 코드처럼 res를 리스트로 한 코드가 100점 나오는지 채점해보세요. 아마 안나올 겁니다.  문제에 있는 입력예제가 답이 나왔다해서 정답코드인 것은 아닙니다.