본문 바로가기
코딩 테스트 (C#)/프로그래머스 (기초)

[C#][프로그래머스 > 코딩테스트 기초] 조건에 맞게 수열 변환하기 3

by 스누누피 2024. 8. 13.

프로그래머스 > 코딩테스트 연습 > 코딩 기초 트레이닝 > 조건에 맞게 수열 변환하기 3

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

 

📒 문제

정수 배열 arr와 자연수 k가 주어집니다.
만약 k가 홀수라면 arr의 모든 원소에 k를 곱하고, k가 짝수라면 arr의 모든 원소에 k를 더합니다.
이러한 변환을 마친 후의 arr를 return 하는 solution 함수를 완성해 주세요.

 

제한사항

  • 1 ≤ arr의 길이 ≤ 1,000,000
  • 1 ≤ arr의 원소의 값 ≤ 100
  • 1 ≤ k ≤ 100

 

입출력 예

arr k result
[1, 2, 3, 100, 99, 98] 3 [3, 6, 9, 300, 297, 294]
[1, 2, 3, 100, 99, 98] 2 [3, 4, 5, 102, 101, 100]

 

입출력 예 설명

 

입출력 예 #1

  • 주어진 k인 3은 홀수이므로, 전체 배열에 3을 곱합니다. 따라서 [3, 6, 9, 300, 297, 294]을 return 합니다.

입출력 예 #2

  • 주어진 k인 2는 짝수이므로, 전체 배열에 2를 더합니다. 따라서 [3, 4, 5, 102, 101, 100]을 return 합니다.

💻 소스코드

using System;
using System.Linq;

public class Solution {
    public int[] solution(int[] arr, int k) {
         return arr.Select(s => {
             if(k%2 == 1) return s*k;
             else return s+k;
         }).ToArray();
    }
}

 

다른 풀이

using System;
using System.Linq;

public class Solution {
    public int[] solution(int[] arr, int k) {
        if(k%2 == 1) 
            return arr.Select(s => s*k).ToArray();
        else 
            return arr.Select(s => s+k).ToArray();
    }
}

 

📝 풀이

첫번째 풀이는 arr을 Select로 돌며 k의 홀짝 여부를 판단해 곱하거나 더하였다.

 

하지만 체점 완료 후 다른 풀이를 찾아보니 k의 홀짝 여부는 한번만 판단 하면 되는 것이기 때문에

k의 홀짝 여부를 판단 먼저 하고 Select를 도는것 더 좋은 코드라고 판단이 되어서 가져와 봤다.

 

이런 사소한 부분을 미리 고쳐야지 추후 더 좋은 코드를 작성할 수 있을거라고 생각된다.


관련 포스팅

 

[C# 문법] Enumerable 클래스

최근 수정: 2024.08.12Enumerable 클래스 내용 중 새로 알게되거나 사용했던 메서드들 기록하는 곳입니다. Enumerable 클래스Enumerable 클래스는 LINQ의 일부로 IEnumerable 인터페이스를 구현하는 컬렉션 클래

twd0622.tistory.com