swjwpower   3년 전

if (min == 0) break; 이것만 지우면 시간초과가 납니다.

근데 이해가 잘 안됩니다.

n의 개수가 많아지면 min이 0이 되는 경우가 필수적으로 나온다는 것인데 이게 잘 이해가 안됩니다..

제가 푼 방법이 비둘기집의 원리를 이용한 것 인가요???

exponential_e   3년 전

우선 결론적으로 틀린 코드는 아니라고 생각됩니다.

min == 0 일때 멈추신 것은 사실상 그 값보다 낮게 나올 수 없으니 브레이크를 걸어 중단시키신 것 같은데,

만약 비둘기 집의 원리를 생각하지 않으시고 이러한 코드를 넣으셨다면, 그 의도가 운 좋게 맞물렸다..?라고 보는것이 맞지 않나 싶네요.

.

.

'n의 개수가 많아지면 min이 0이 되는 경우가 필수적으로 나온다는 것인데'

이 말씀하신 부분에 대한 설명을 간략히 드려보겠습니다.

.

예를 들어 16가지의 경우의 수로 17개만 채운다해도 적어도 하나의 중복이 생깁니다. (같은 성격 유형이 2개가 되는 경우죠)

같은 성격유형을 3개 만들기 위해선 적어도 몇 개의 데이터가 필요할까요.

또한, 작성자님께서 생각하시는 시간초과가 날 것 같은 N의 범위에서, 만약 같은 성격 유형을 3개 만드는 것을 피하려고 한다면 피할 수 있을까요?

.

어려운것은 아니니 혹여 이해가 어려우시다면 직접 여러가지 경우를 써보셔도 좋을 것 같습니다.

설명이 잘 된건지..ㅠ 뭔가 정석적인 설명이 좀 어려워 아래는 약간의 이해를 더 돕고자 첨언 드립니다 ㅎㅎ..

(잘 하시는 분들의 명확한 설명을.. 기다려보시는 것도 좋을 것 같습니다 ㅜㅜ)

.

비둘기 11마리를 비둘기집 10개에 넣는 경우 어느 집 하나에는 반드시 비둘기가 두마리 존재한다.

16가지 성격유형을 가지는 사람이 K명(K > 16)이 존재한다면 어느 두사람은 반드시 같은 성격 유형을 갖는다.

swjwpower   3년 전

아 이해됫습니다! 그래서 3명을 뽑는것이니 16^3이상의 경우에는 성격이 같은사람이 3명이상이 무조건 등장하기에 저 조건식에의해서 바로 끝나는 거군요?

slack에서 16^3이라고 적으신 것들이 이걸 의미하는거였다니..

친절한 답변 감사합니다!

댓글을 작성하려면 로그인해야 합니다.