알고리즘/Programmers

lv.0 배열만들기2 C#

JiHxxn 2024. 3. 31. 03:19

📝 문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.


입출력 예

l r result

5 555 [5, 50, 55, 500, 505, 550, 555]
10 20 [-1]

입출력 예 설명

입출력 예 #1

  • 5 이상 555 이하의 0과 5로만 이루어진 정수는 작은 수부터 5, 50, 55, 500, 505, 550, 555가 있습니다. 따라서 [5, 50, 55, 500, 505, 550, 555]를 return 합니다.

입출력 예 #2

  • 10 이상 20 이하이면서 0과 5로만 이루어진 정수는 없습니다. 따라서 [-1]을 return 합니다.

풀이 코드

using System.Linq;

public static int[] solution(int l, int r)
{
    int[] answer = new int[] { };
    answer = Enumerable.Range(l, r -l+ 1).
					Where(x => x.ToString().All(y => y == '5' || y == '0')).ToArray();

    if (answer.Length == 0)
        return new int[1] { -1 };

    return answer;
}
  • 문제를 해석해 보면 파라미터로 들어온 l 이상, r 이하의 정수 중 0과 5로만 이루어진 정수를 추출해 return 하고 만약 그들로 이루어진 숫자가 없다면 -1을 담은 배열을 return 하는 것이다.
  • 처음엔 for문과 if문을 사용하여 노가다 방식으로 구현해보고 Linq를 사용하여 구현하였다.

✍️ 중요 포인트

  1. Enumerable.Range는 파라미터로 2개의 정수를 받는다
    1. 첫 번째로 들어가는 값은 처음 시작하려는 정수, 두 번째로 들어가는 값은 길이를 뜻한다.
      1. 만약 5 이상 10 이하의 값을 생성하려면 파라미터 값으로 5부터 시작하여 6개의 길이 값을 넣어 주어야 하는데, 이를 (l, r - l +1)로 구현하면 다른 파라미터 값이 들어와도 조건에 맞게 구현된다.
  2. All은 조건에 모든 값들이 만족하는가? 만족한다면 '맞다'라는 결과를 도출한다.
    1. ||문을 사용해 5와 0일 시에만 True값으로 설정하고 마지막으로 ToArray를 사용해 answer배열에 삽입해 주었다.

'알고리즘 > Programmers' 카테고리의 다른 글

lv.2 프로세스 C#  (0) 2024.04.08
lv.2 올바른 괄호 C#  (0) 2024.03.31
lv.1 덧칠하기 C#  (0) 2024.03.17
lv.1 달리기 경주 C#  (0) 2024.03.16
lv.1 영어 끝말잇기 C#  (0) 2024.03.02