숫자게임

도경원·2023년 2월 5일
0

알고리즘스터디_C++

목록 보기
27/42

문제

[프로그래머스] 숫자게임

접근

차이가 작은 것부터 빼간다
그러기 위해서 오름차순으로 정렬되어야 한다

  1. 두 데이터를 오름차순으로 정렬한다
  2. 큰 수가 나타날 때까지 찾는다
  3. 찾으면 다음 수를 찾는다
  4. 새로 찾는 수는 이전에 찾은 인덱스 다음 것부터 검사한다

해결

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

using namespace std;

// 정렬해주고 A보다 더 큰 수가 B에서 나올 때 업데이트

int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    int lastidx = 0; // B idx 업데이트 용

    sort(A.begin(), A.end());
    sort(B.begin(), B.end());

    for (int i = 0; i < A.size(); i++){
        for (int j = lastidx; j < A.size(); j++){ // 큰 수가 나오면 그 다음 수부터 검사한다
            if (A[i] < B[j]) {
                lastidx = j+1;
                answer++;
                break;
            }
        }
    }
    return answer;
}

int main() {
    int n; cin >> n;

    vector<int> teamA;
    vector<int> teamB;

    for (int i = 0; i < n; i++)
    {
        int tmp; cin >> tmp;
        teamA.push_back(tmp);
    }
    for (int i = 0; i < n; i++)
    {
        int tmp; cin >> tmp;
        teamB.push_back(tmp);
    }
    cout << solution(teamA, teamB);

}

개념정리

개념
sort arraysort(배열이름, 배열이름 + 배열크기)
sort vectorsort(벡터이름.begin(), 벡터이름.end()
profile
DigitalArtDeveloper

0개의 댓글