본문 바로가기
알고리즘/c++ 프로그래머스

[프로그래머스 숫자게임] c++ (풀이, 코드)

by 말린밴댕이_공부 2023. 6. 25.
반응형

문제링크

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

 

프로그래머스

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

programmers.co.kr

문제

 

풀이, 코드

이 문제를 풀었을때는 아주 당황했다 설마 이게 맞는걸까..? 싶긴했지만 확신을 가지고 코드를 level3인데 주석에 대한 생각을 적는 시간보다 코드를 치는 시간이 더 짧았다.

 

3분만에 푸는 시간이었고 풀이는 간단합니다.

 

a가 공개 b가 최대의 승수 만드는법 -> 그냥 결국 그 값의 큰값중에 가장 큰값을 가져옴
a를 sort함 -> b의 가장 비슷한 큰값을 가져옴
1 3 5 7
2 2 6 8
1 2 / 3 6 / 5 8 -> 다른 케이스도 많지만 결국 이것이 최대의 값임은 분명함!

 

결국 물론 위의 문제의 예시처럼 다른방법도 많습니다.

하지만, 최대의 승수를 추출하는 방법에 대해서는 결국 가장 큰값을 냄겨두면서 가장 적은 차이로 이기는 것이 포인트입니다.

 

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

using namespace std;

int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    int idxA = 0;
   
    sort(A.begin(),A.end());
    sort(B.begin(),B.end());
   
    for(int i = 0; i < B.size();i++){
        if(A[idxA] < B[i]){
            answer++;
            idxA++;
        }
    }
    return answer;
}

 

반응형

댓글