📝24.01.08
🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/120809?language=csharp
문제 설명
정수 배열
numbers
가 매개변수로 주어집니다.numbers
의 각 원소에 두배한 원소를 가진 배열을return
하도록solution
함수를 완성해주세요.
using System;
public class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[] {};
answer = numbers;
for(int i = 0; i < answer.Length; i++) {
answer[i] *= 2;
}
return answer;
}
}
1) Linq를 적절히 활용한 풀이
using System;
using System.Linq;
public class Solution {
public int[] solution(int[] numbers) {
int[] answer = numbers.Select(n => n * 2).ToArray();
return answer;
}
}
2) int[] 배열의 크기를 number.Length
로 선언해준 응용법
-> 해당 방법으로 시도하였으나 실패했었다. 내 기억상으로는 number.Length
뒤에 {}를 지우지 않았어서 오류가 난 듯 하다.
using System;
public class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.Length];
for(int i=0;i<numbers.Length;i++)
answer[i] = numbers[i] * 2;
return answer;
}
}
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
for(int i = 0; i < numbers.size(); i++) {
answer.push_back(numbers[i] * 2);
}
return answer;
}
1) 비트 연산자를 활용한 풀이
-> 비트연산자는 왼쪽으로 1칸씩 2배가 되고, 오른쪽으로 한칸씩 1/2배가 된다.
#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;
}
2) numbers
배열 자체를 수정하여 반환
int
와 int&
의 차이 : int
는 값을 반환하는 것이고 int&
은 변수 그 자체를 반환하는 것이므로 auto& v
가 아닌 auto v
로 수정하면 2배한 값이 반환되지 않고 초기의 numbers
가 반환됨#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> numbers) {
for(auto& v : numbers)
{
v *=2;
}
return numbers;
}