FrontEnd/프로그래머스

[JS] 숫자게임

728x90

그리디 알고리즘을 활용해서 해결하였다.

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12987

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

A와 B를 우선 정렬해준다. 이후 각 팀의 가장 쌘놈부터 결투를 시킨다. 

 

문제가 승점의 차가 최대의 격차로 나게하는 것이 아닌 절대적인 승점 자체를 가장 많이 받게 하는 방식이기 때문에 이게 가능하다.

 

B에서 가장 쌘놈을 뽑아서 A에서 가장쌘놈과 싸우면서 이길수 있는 상대가 나올 때까지 선수를 교체시키면서 싸우면 된다. 

 

 

 

조금 생각할 점은 A의 나머지 애들 다 B보다 강한경우에는 승점을 못얻어서 빨리 끝내야 한다. 이를 위해 이중 반복문에서 상위 반복문을 종료시킬 수 있는 JS의 문법을 활용하였다.

 

 

 

 

function solution(A, B) {
    A = A.sort((a,b) => a-b)
    B = B.sort((a,b) => a-b)
    let ret = 0
    
    outer : while(B.length && A.length){
        const bScore = B.pop()
        while(A.pop() >= bScore)
            if(!A.length) break outer //남은 A가 b보다 모두 큰경우
        ret ++
    }
    return ret
    
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 기지국 설치  (0) 2024.02.08
[JS] [1차] 추석 트래픽  (1) 2024.02.06
[JS] 셔틀버스 (2018 카카오)  (1) 2024.02.01
[JS] 길 찾기 게임  (1) 2024.01.31
[JS] 디스크 컨트롤러  (0) 2024.01.30