코딩/프로그래머스

[프로그래머스] 시소 짝꿍 - C++

최선을 다하는 2023. 3. 15. 15:49


N이 10만이다 O(N^2)으로 풀 수 없다. 따라서 정렬을 한 다음 풀거나 바로 linear 하게 풀어야 한다.

우선, 해당 weight 의 사람이 얼마인지 센다.

짝꿍의 경우의 수는 무게의 비율이

1 : 1 / 2 : 1 / 2 : 3 / 3 : 4 총 4가지 경우가 있다.

i번째 사람의 몸무게를 생각할때

1. 무게가 같은 사람은 nC2 만큼의 짝꿍이 나온다. 이는 무게가 같은 사람을 확인할 때 1번만 진행하여야 한다.

2. 무게가 다르면 해당 비율의 무게의 사람 수만큼 짝꿍이 될 수 있다.

 


linear 하게 풀어야겠다는 생각을 빨리 했지만 방법을 찾는 데는 조금 걸렸다. 중복처리를 잘해야 한다!