프론트엔드 개발자의 기록 공간

[프로그래머스 JavaScript] 체육복 본문

알고리즘_JS/프로그래머스_Level1

[프로그래머스 JavaScript] 체육복

[리우] 2021. 5. 24. 23:53

프로그래머스 Level1 체육복 문제 -> 탐욕법(Greedy) 유형

 

문제 설명 : 체육복을 읽어버린 학생중 몇명이 빌릴 수 있는지 파악하면 되는 문제이다.

마지막 제한사항이 제일 중요하다. 잃어버린 학생 자신이 여분이 있을 경우,

자기 자신것을 입으면 되기때문에 lost, reserve에 중복된 학생 정보가 있으면 삭제 후,

위의 조건을 해결하면 된다.

 

코드 설명 : 첫번째 for문에서 잃어버린 학생 자신이 여분이 있을 경우,  중복 처리해주는 로직이다.

해당 로직 수행후 중복 제거된 정보는 tmpLost, reserve에 담긴다.

 

두번째 for문을 통해 잃어버린 학생들의 정보를 순회하면서 앞과 뒤학생 정보를 여분의 학생정보에서 찾는다.

찾았다면 여분의 학생정보를 삭제 해주고 cnt를 증가한다.

 

모든 로직이 수행이 끝났다면, cnt는 빌려준 횟수가 담겨져있다.

최종적으로 체육 수업들을 수 있는 학생을 구할려면 총 학생 - (잃어버린 학생 - 빌려준 횟수)의 연산을 

수행하면된다.

해당 로직은 2번의 반복문이 수행되었고 반복문안에 indexOf나 includes를 수행했으므로 

시간 복잡도는 O(n^2)을 가진다.

728x90
Comments