상세 컨텐츠

본문 제목

프로그래머스 : 숫자 게임

코테준비/하루한개도전~

by 움바둠바 2024. 8. 23. 17:50

본문

728x90

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

 

프로그래머스

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

programmers.co.kr

 

생각보다 쉬웠다..

출전순서는 의미없고 무조건 한번씩만 겨룬다는게 중요했다!

 

=> A와 B를 내림차순으로 정렬해서, two pointer 이용해서 무조건 B가 이기도록 하는 경우의 수를 세면 된다.

 

A[i], B[j] 를 비교했을 때,

1. B가 이김 (A[i] < B[j]) : 둘이 겨뤘다고 생각하고 answer count 증가 => i++, j++

2. B가 지거나 비김 : 무효로 취급! 더 작은 카드를 가진 A와 B가 겨뤄보도록 해야함 => i++, j그대로

 

이렇게 간단하게 풀린다고,,? 왜지??

 

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    
    sort(A.begin(), A.end(), greater<>());
    sort(B.begin(), B.end(), greater<>());
    
    
    int j = 0; // B index
    for(int i = 0; i<A.size(); i++){
        if(A[i] < B[j]){
            // win
            answer++;
            j++;
        }
        // 지거나 비김
        // 아무것도 할필요가 없음 (j 그대로)
    }
    
    return answer;
}
728x90

관련글 더보기