문제:머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.

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

using namespace std;

int solution(vector<int> array, int height) {
    int answer = 0;
    sort(array.begin(), array.end()); //오름차순 정렬
    
    for(int i = 0; i< array.size(); i++) {
        if(array[i] > height) {
            answer++;            
        }
    }
    return answer;
}

 

C++ 범위기반 for문 


    for (auto element: array) {
        answer += (element> height);
    }

설명: 루프는 각 array의 요소를 반복, element에 선언된 변수에 현재 배열 요소의 값을 할당.
참고1: 비교군이 같아야 형변환 에러가 나지 않으므르 자료형을 맞추거나, auto 키워드를 사용할것
참고2: 성능을 고려하여 const auto로 설정하면 읽기 전용 모드로 설정되어 성능이 빨라진다
참고3: 위의 문제와 같이 단순히 count만 하는것이 아니라, 배열의 값을 복사하려면
for(const auto & element : array) 해주면 된다.

int array[5] = { 1,2,3,4,5};
for (const auto& element: array) 
        std::cout << element << ' ';

출처: 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/120585

+ Recent posts