본문 바로가기

코딩테스트 연습/C#

[C#/알고리즘] 두 개 뽑아서 더하기

반응형

💡 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

 

‼️ numbers의 길이는 2 이상 100 이하입니다.

‼️ numbers의 모든 수는 0 이상 100 이하입니다.

 

 

🖥 내 풀이

using System;
using System.Linq;
using System.Collections.Generic;

public class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = new int[] {};
        List<int> tempList = new List<int>();
        int num1 = 0;
        int num2 = 0;

        // 배열 안 서로 다른 수 더하기
        for(int i = 0; i < numbers.Length; ++i) {
            for(int j = i+1; j < numbers.Length; ++j) {
                num1 = numbers[i];
                num2 = numbers[j];
                tempList.Add(num1 + num2);
            }
        }

        // 중복값 제거
        tempList = tempList.Distinct().ToList();

        // 오름차순 나열
        answer = tempList.ToArray();
        Array.Sort(answer);

        return answer;
    }
}

 

- 처음에 배열로만 해결하려고 해서, 좀 골치 아팠다. 그리고 찾은 방법은 임시 리스트를 하나 생성해서, 리스트에 값을 추가한 다음 다시 배열로 바꾸는 것. (배열로 할 경우 배열의 길이가 정해져있지 않아서, 값을 추가하면 배열의 인덱스를 벗어났다는 에러가 계속 나왔다.)

 

- 중복값 제거의 경우에는 List에는 Distinct() 를 사용해서 중복값 제거를 할 수 있었는데, 이걸 쓰려면 using System.Linq; 를 추가해줘야 한다.

 

- 처음에 생각대로 코딩을 해서 num1과 num2를 선언하고 사용했는데, 굳이 변수 선언 안하고 바로 numbers[i]+numbers[j] 로 해줘도 될 것 같다.

 

 

 

🖥 다른 풀이 방법

using System;
using System.Collections.Generic;

public class Solution {
    public int[] solution(int[] numbers) {
        List<int> answerList = new List<int>();

        for(int i = 0 ; i < numbers.Length -1 ; ++i){
            for(int j = i+1 ; j < numbers.Length ; ++ j)
                if(!answerList.Contains(numbers[i] + numbers[j]))
                    answerList.Add(numbers[i] + numbers[j]);
        }

        answerList.Sort();

        return answerList.ToArray();
    }
}

 

 

📚 참고했던 사이트

📚 C# 리스트

https://www.delftstack.com/ko/howto/csharp/how-to-add-values-to-array-in-csharp/

 

C# 배열에 값 추가

C# 배열에 값을 추가하는 방법

www.delftstack.com

 

📚리스트 중복 제거

https://ponyozzang.tistory.com/384

 

C# LINQ 리스트에 중복된 값을 제거 하고 취득 하는 방법

C#에서 리스트(List)에 값을 저장한 경우 중복된 값이 포함되어 있는 경우가 있습니다. 중복된 값이 저장된 상태로 출력을 하게 되면 같은 값이 여러번 출력됩니다. 값을 출력할 때 중복된 값을 한

ponyozzang.tistory.com

 

 

 

🗒 출처: 프로그래머스

반응형