반응형
프로그래머스 코딩테스트 1단계 - 나누어떨어지는 숫자배열
코딩테스트 연습 - 나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하
programmers.co.kr
문제의 핵심
1. 배열의 각 원소에 접근하고 조건에 맞는 값만 가져올 수 있는가?
2. 리스트를 사용할 수 있는가?
일단 코딩테스트가 항상 그렇듯,
문제를 잘 읽고 제대로 이해하는 것이 매우 중요하다.
이번 문제는,
숫자로 이루어진 배열 arr가 주어지고, 두번째로 divisor값이 주어진다.
arr의 각 원소들을 divisor로 나눴을 때 나누어 떨어지는 값들만 모아서
오름차순으로 정렬하면 되는 문제이다.
arr의 길이가 정해져 있지 않고 계속 달라지기 때문에
리스트를 사용해주는 것이 효과적이다.
따라서 리스트를 하나 생성해주고
for문을 arr의 길이만큼 돌려서 arr의 각 요소가 divisor로 나눠떨어지는지 체크하고
참인 값들만 리스트에 넣어서 보관해준다.
이러면 모든 절차가 끝이나고,
결과를 리턴할 때는,
리스트의 길이가 0이면 -1로,
0이 아니면, 리스트를 배열로 바꿔서 리턴해주면 된다.
백준의 단계별풀어보기를 먼저 풀다가 프로그래머스로 갑자기 넘어오게되면
문제를 보자마자 어렵다고 느낄 수도 있는데
이건 그냥 문제가 글로 풀어져있어서 그런 것 같다.
정답 코드
// 리스트를 사용하기 위해서 선언
using System.Collections.Generic;
public class Solution {
public int[] solution(int[] arr, int divisor) {
// result 리스트를 만들어 준다.
List<int> result = new List<int>();
// 입력받은 arr의 길이만큼 for문을 돌면서 arr의 원소하나하나를 확인
for(int i=0; i<arr.Length; i++)
{
// arr의 원소 중 divisor로 나누어 떨어지면
if(arr[i]%divisor == 0)
{
// 아까 만든 리스트의 원소로 넣어준다.
result.Add(arr[i]);
}
}
// 만약 나눠떨어진게 없어서 리스트가 0개라면 -1을 출력
if (result.Count == 0)
return new int[] { -1 };
// result리스트를 오름차순으로 정렬해준다.
result.Sort();
// 배열을 반환해달라고 했으므로 ToArray()를 써서 배열로 리턴함
return result.ToArray();
}
}
반응형
'C# > 프로그래머스' 카테고리의 다른 글
[프로그래머스] C# : 직사각형 별찍기 (0) | 2021.07.28 |
---|---|
[프로그래머스] C# : 짝수와 홀수 (0) | 2021.07.28 |
[프로그래머스] C# : 두 개 뽑아서 더하기 (0) | 2021.07.28 |
[프로그래머스] C# : 핸드폰 번호 가리기 (0) | 2021.07.28 |
[프로그래머스] C# : x만큼 간격이 있는 n개의 숫자 (0) | 2021.07.27 |
댓글