우선 결론적으로 틀린 코드는 아니라고 생각됩니다.
min == 0 일때 멈추신 것은 사실상 그 값보다 낮게 나올 수 없으니 브레이크를 걸어 중단시키신 것 같은데,
만약 비둘기 집의 원리를 생각하지 않으시고 이러한 코드를 넣으셨다면, 그 의도가 운 좋게 맞물렸다..?라고 보는것이 맞지 않나 싶네요.
.
.
'n의 개수가 많아지면 min이 0이 되는 경우가 필수적으로 나온다는 것인데'
이 말씀하신 부분에 대한 설명을 간략히 드려보겠습니다.
.
예를 들어 16가지의 경우의 수로 17개만 채운다해도 적어도 하나의 중복이 생깁니다. (같은 성격 유형이 2개가 되는 경우죠)
같은 성격유형을 3개 만들기 위해선 적어도 몇 개의 데이터가 필요할까요.
또한, 작성자님께서 생각하시는 시간초과가 날 것 같은 N의 범위에서, 만약 같은 성격 유형을 3개 만드는 것을 피하려고 한다면 피할 수 있을까요?
.
어려운것은 아니니 혹여 이해가 어려우시다면 직접 여러가지 경우를 써보셔도 좋을 것 같습니다.
설명이 잘 된건지..ㅠ 뭔가 정석적인 설명이 좀 어려워 아래는 약간의 이해를 더 돕고자 첨언 드립니다 ㅎㅎ..
(잘 하시는 분들의 명확한 설명을.. 기다려보시는 것도 좋을 것 같습니다 ㅜㅜ)
.
비둘기 11마리를 비둘기집 10개에 넣는 경우 어느 집 하나에는 반드시 비둘기가 두마리 존재한다.
16가지 성격유형을 가지는 사람이 K명(K > 16)이 존재한다면 어느 두사람은 반드시 같은 성격 유형을 갖는다.
swjwpower 3년 전
if (min == 0) break; 이것만 지우면 시간초과가 납니다.
근데 이해가 잘 안됩니다.
n의 개수가 많아지면 min이 0이 되는 경우가 필수적으로 나온다는 것인데 이게 잘 이해가 안됩니다..
제가 푼 방법이 비둘기집의 원리를 이용한 것 인가요???