Lv.0 배열 두 배 만들기

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

 

#include <bits/stdc++.h>

using namespace std;

vector<int> solution(vector<int> numbers) {
    vector<int> answer;
    for(int i=0; i<numbers.size(); i++){
        answer.push_back(2*numbers[i]);
    }
    return answer;
}

 

++++++++++++++++++++++++++++++
다른 사람 풀이 보기를 하는데, 가장 많은 추천을 받아서 위에 올라와있는 풀이를 보니까 제법 깔끔하게 느껴져서 여기에 첨부해본다. 

#include <vector>

using namespace std;

vector<int> solution(vector<int> numbers) {
    for(int i=0; i<numbers.size(); i++)
        numbers[i] = numbers[i] << 1;
    return numbers;
}

내가 푼 풀이에서는 문제에서 처음에 세팅해놓은대로 새롭게 answer이라는 vector를 선언해서 그걸 return 하는데, 이 풀이의 경우는 

numbers의 수를 비트쉬프트를 통해서 2진수 표현에서 왼쪽으로 한칸씩 이동하는것을 의미하는데, 그렇게 하는것이 바로 2배를 하는것과 같은 연산이기 때문에 2배를 하는것을 저런식으로 표현 할 수 있는 것이다. 물론 그냥 

numbers[i]=numbers[i]*2; 로 표현해도 문제 없을텐데 그냥 좀 쿨해보이는 느낌이다. 

answer을 반환하는게 아니라 그냥 그대로 numbers를 바꾸어서 반환하는게 내가 생각하고 있는 고정관념을 깨는것 같아서 마음에 든다. 

아직 프로그래머스에서 문제를 푸는것이 익숙치 않아서 완전 새롭게 answer을 return 해야한다고 생각했는데 그게 아니라는걸 알았으니까 나도 다음에 사용해보도록 하자. 

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

Lv.0 나이 출력  (0) 2023.09.12
Lv.0 나머지 구하기  (0) 2023.09.12
Lv.0 분수의 덧셈  (0) 2023.09.12
Lv.0 숫자 비교하기  (0) 2023.09.12
Lv.0 두 수의 나눗셈  (0) 2023.09.12
  Comments,     Trackbacks