[프로그래머스 / C++] 배열의 길이를 2의 거듭제곱으로 만들기

YH·2023년 11월 28일
0

문제

배열의 길이를 2의 거듭제곱으로 만들기 : 문제 링크


문제 분석

  • 정수 배열 arr이 매개변수로 주어진다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr뒤에 정수 0을 추가하려고 한다. arr에 최소한의 개수로 0을 추가한 배열을 return
  • arr 크기를 할당하기 위해 resize() 함수를 사용하므로 algorithm 헤더를 include
  • arr의 길이에 따라 2의 정수 거듭제곱을 찾기위한 함수 count를 만듬. 2의 정수 거듭제곱의 최소값인 1로 i를 초기화하고, while loop를 통해 i < n이라는 조건식을 만족하는 동안 i에 2를 거듭하여 곱한다. loop를 탈출하면 i를 return. solution 함수에서 count 함수를 통해 계산한 값을 정수 add에 저장. 정수 배열 arr의 사이즈를 resize() 함수를 통해 add 크기만큼 할당하고, 나머지는 0으로 추가. 최종적으로 저장된 arr을 return

algorithm 헤더의 resize() 함수 사용법
void resize (size_type n, value_type val);
n => 할당할 벡터의 사이즈
val => 할당할 벡터 사이즈가 기존보다 크다면 빈 공간을 채울 값


풀이

#include <vector>

using namespace std;

int count(int n) {
    int i = 1;
    
    while(i < n) {
        i *= 2;
    }
    return i;
}

vector<int> solution(vector<int> arr) {
    int add = count(arr.size());
    
    arr.resize(add, 0);
    return arr;
}
profile
Keep Recycling Your Dreams

0개의 댓글