◎ 문제
○ 출처
programmers.co.kr/learn/courses/30/lessons/68644
○ 문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. |
○ 제한사항
numbers의 길이는 2 이상 100 이하입니다.
|
○ 입출력 예
○ 입출력 예 설명
입출력 예 #2
|
○ 작성 예시 코드
using System;
public class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[] {};
return answer;
}
}
◎ 나의 문제풀이
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution
{
public int[] solution(int[] numbers)
{
int temp_number = 0; // 결과값 저장용
Dictionary<int, int> result_dic = new Dictionary<int, int>();
for(int i = 0; i < numbers.Length; ++i)
{
for(int j = i+1; j < numbers.Length; ++j)
{
temp_number = numbers[i] + numbers[j];
// 딕셔너리에 값이 없으면 새로 저장
if (result_dic.ContainsKey(temp_number) == false)
{
result_dic.Add(temp_number, temp_number);
}
}
}
// 딕셔너리의 key나 value를 Array로 변환 후 정렬
int[] answer = new int[result_dic.Count];
answer = result_dic.Values.ToArray();
Array.Sort(answer);
return answer;
}
}
- 정답 요소를 저장하는 방법으로List를 사용해도 되지만 Dictionary 자료구조를 사용한 이유는 반복문 내부에서
중복된 요소를 검사할 때 List의 Contains를 사용하는 것 보다는 Dictionary의 Contains를 사용하는 것이
데이터 조회에서 좀 더 성능적으로 알맞다고 판단했기 때문입니다.
'프로그래밍 문제 풀이 > C#' 카테고리의 다른 글
[프로그래밍 문제 풀이] 프로그래머스 - 영어 끝말잇기 (C#) (0) | 2020.10.20 |
---|---|
[프로그래밍 문제 풀이] 프로그래머스 - 3진법 뒤집기(C#) (0) | 2020.10.14 |
[프로그래밍 문제 풀이] 프로그래머스 - 최솟값 만들기 (C#) (0) | 2020.09.10 |
[프로그래밍 문제 풀이] 프로그래머스 - 다음 큰 숫자 (C#) (0) | 2020.09.10 |
[프로그래밍 문제 풀이] 프로그래머스 - 위장 (C#) (0) | 2020.09.10 |