티스토리 뷰

  • 오전
    • 운동(유산소)
  • 오후
    • 코딩테스트
    • 포트폴리오 정리
  • 저녁
    • 그림

 

 

 

코딩 테스트 - 배열의 길이에 따라 다른 연산하기

 

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181854

 

정수 배열 arr과 정수 n이 매개변수로 주어집니다. arr의 길이가 홀수라면 arr의 모든 짝수 인덱스 위치에 n을 더한 배열을, arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 하는 solution 함수를 작성해 주세요.

 

arr n result
[49, 12, 100, 276, 33] 27 [76, 12, 127, 276, 60]
[444, 555, 666, 777] 100 [444, 655, 666, 877]

 

내가 쓴 코드

public int[] solution(int[] arr, int n)
{
    List<int> answerList = new List<int>();
    
    for (int i = 0; i < arr.Length; i++)
    {
        //짝수라면 홀수 인덱스에 있는 값에 n더해주기
        if (arr.Length % 2 == 0 && i % 2 != 0)
        {
            answerList.Add(arr[i] + n);
        }
        else if (arr.Length % 2 == 0)
        {
            answerList.Add(arr[i]);
        }
        //홀수라면 짝수 인덱스에 있는 값에 n더해주기
        if (arr.Length % 2 != 0 && i % 2 == 0)
        {
            answerList.Add(arr[i] + n);
        }
        else if (arr.Length % 2 != 0)
        {
            answerList.Add(arr[i]);
        }
    }
    return answerList.ToArray();
}

 

1. for문으로 받은 arr의 길이를 기준으로 반복한다.

2. 짝수면서 홀수 인덱스인 곳엔 n값을 더해 넣어준다. 그냥 짝수인 곳은 원래 있었던 값을 넣어준다.

3. 홀수면서 짝수 인덱스인 곳엔 n값을 더해 넣어준다. 그냥 홀수인 곳은 원래 있었던 값을 넣어준다.

4. int 배열로 return 한다.

 

생각보다 코드를 짧게 쓰진 못했다

 

다른사람의 코드

using System;

public class Solution {
    public int[] solution(int[] arr, int n) 
    {
        int i = arr.Length % 2 == 1 ? 0 : 1;
        for(; i < arr.Length; i += 2)
            arr[i] += n;
        return arr;
    }
}

 

1. int i를 선언하고 arr의 Lenght가 홀수면 0 짝수면 1로 초기화한다.

2.  홀수면면 0에서부터 시작하는 반복문을 홀수면 1에서부터 시작하는 반복문을 돌리게된다.

3. 배열 2 간격으로 n을 더해준다.

 

 

배열의 크기는 arr와 result가 같다보니

굳이 List를 쓸 필요는 없었다는 걸 깨달았다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함