코딩테스트/프로그래머스_코딩 기초 트레이닝

[프로그래머스] 조건에 맞게 수열 변환하기 3

아리빠 2023. 5. 30. 12:22

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

 

 

<생각과정>

 

if문으로 k % 2 ==0 ,else 뽑아서 배열 arr에 k의 덧셈 곱셈 넣기 

class Solution {
    public int[] solution(int[] arr, int k) {
        
        int[] answer = {};
        
        if (k%2==0){
            for(int i=0; i<arr.length; i++){
                answer= arr[i] + k;
            }

        }else{
          for(int i=0; i<arr.length; i++){
                answer= arr[i] * k;
            }
        }
        return answer;
    }
}

배열의 덧셈 곱셈 바로 못하는데 어떻게 해줘야 할까 

 

class Solution {
    public int[] solution(int[] arr, int k) {
        
        int[] answer = {};
      
        
        if (k%2==0){
            for(int i=0; i<arr.length; i++){
                answer[i]= arr[i] + k;
            }

        }else{
          for(int i=0; i<arr.length; i++){
                answer[i]= arr[i] * k;
            }
        }
        return answer;
    }
}

새로운 오류 등장,,, 흠

 

class Solution {
    public int[] solution(int[] arr, int k) {
        
        int[] answer = new int[arr.length];
      
        if (k%2==0){
            for(int i=0; i<arr.length; i++){
                answer[i]= arr[i] + k;
            }

        }else{
          for(int i=0; i<arr.length; i++){
                answer[i]= arr[i] * k;
            }
        }
        return answer;
    }
}

배열 생성 선언 해줄때 [size] 넣어주기 

 

class Solution {
    public int[] solution(int[] arr, int k) {
        
        int[] answer = new int[arr.length];
      
        if (k%2==0){
            for(int i=0; i<arr.length; i++){
                answer[i]= arr[i] + k;
            }

        }else{
          for(int i=0; i<arr.length; i++){
                answer[i]= arr[i] * k;
            }
        }
        return answer;
    }
}

성공...!

 

<코딩 줄여보기>

class Solution {
    public int[] solution(int[] arr, int k) {
    
        for(int i = 0; i < arr.length; i ++){
            if (k%2==0){
                arr[i]= arr[i] + k;

            }else{
                arr[i]= arr[i] * k;
             }
        } 
        return arr;
    }
}

처음 주어지는  answer 안쓰고 써봤는데 현재로썬 이게 최선인듯...