
using System.Collections.Generic;
using System;
public class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = new int[] {};
List<int> list = new List<int>();
for(int i=0;i<arr.Length; i++)
{
if(arr[i]%divisor==0)
list.Add(arr[i]);
}
if(list.Count==0)
list.Add(-1);
answer=list.ToArray();
System.Array.Sort(answer);
return answer;
}
}
정수 배열 arr과 나누는 수 divisor를 입력 받아 배열 내의 요소 중 divisor로 나누어 떨어지는 수만을 추출해 새로운 배열을 만들고, 오름차순으로 정렬하여 반환.
divisor로 나누어 떨어지는 요소가 하나도 없다면 배열에 -1을 담아 반환
변수 초기화 : 빈 배열 answer와 정수 리스트 list를 초기화, list는 나중에 조건에 맞는 요소를 저장하기 위해 사용
배열 순회 : 입력 배열 arr의 각 요소를 순회하며, divisor로 나누어 떨어지는지 확인.
조건 검사 : 요소가 divisor로 나누어 떨어지면(arr[i] % divisor == 0), 해당 요소를 list에 추가
결과 처리: 순회 뒤에 list가 비어있으면 -1을 추가, 그렇지 않으면 list를 배열로 변환하여 answer에 할당.
배열 정렬: Array.Sort 메서드를 사용하여 answer 배열을 오름차순으로 정렬
이후 결과 반환.
변수 사용 이해
list : 유동적인 데이터 추가조건문 사용 : % 연산자로 나누어 떨어지는지 아닌지 판별함
동적 배열과 정적 배열의 차이 : List와 배열의 차이 및 활용 차이
List<int>는 요소 추가가 자유롭고, .ToArray() 메서드를 통해 배열로 쉽게 변환
Array.Sort는 배열을 오름차순으로 정렬using System;
using System.Linq;
public class Solution {
public int[] solution(int[] arr, int divisor) {
var filtered = arr.Where(x => x % divisor == 0).OrderBy(x => x).ToArray();
return filtered.Length > 0 ? filtered : new[] {-1};
}
}
LINQ를 사용하여 한 줄로 배열을 필터링(Arr.Where)하고, 정렬(OrderBy)
LINQ를 사용하면 수동으로 리스트와 배열을 다루는 코드 작업이 줄어 더 깔끔하고 읽기 쉬워보인다.
주어진 배열에서 특정 조건을 만족하는 요소만을 선택하는 과정
위 '2. 다른 풀이' 에서는 Linq의 Arr.Where를 사용 했으며,
기본적인 방법은 반복문을 사용하는 편이다.
배열을 순회하며 각 요소가 특정 조건에 부합하는지 검사하고, 조건에 맞는 다면 그 요소만 컬렉션(배열 or 리스트)에 추가.
List<int> filtered = new List<int>();
foreach (int element in arr) {
if (element % 2 == 0) { // 짝수인 경우
filtered.Add(element);
}
}
using System.Linq;
...
var filtered = arr.Where(x => x % 2 == 0).ToList();
Where 메서드를 사용하여 배열이나 리스트에서 조건을 만족하는 요소만을 선택하고 내부적으로 반복문을 사용
x => x % 2 == 0 -> 각 요소 x에 대한 필터링 조건