Notice
Recent Posts
Recent Comments
Link
제이슨의 개발이야기
프로그래머스 두개 뽑아서 더하기 월간 코드 챌린지 시즌1 본문
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/68644
안녕하세요! 오늘은 프로그래머스 에서 두 개 뽑아서 더하기 란 문제를 풀어봤습니다!
문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
입출력 예
numbers | result |
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
이 문제를 보고 제가 처음으로 생각나는 것은 배열을 차례대로 다 더해보고 그것 을 저장하고 나서 sort 한 값을 return 하면 되지 않을까?
란 생각이 들었습니다 그러나 하나씩 다 더해보면 중복이 발생하게 되면 중복된 값들은 하나만 저장해야 하는 문제가 있었습니다
그 때 생각한 것이 hash map 은 중복을 허용하지 않기 때문에 hash map 을 이용해서 먼저 더하고 나서 그 map 의 key 들을 따 로 빼서 sort 하면 되지 않을까? 란 생각을 하게 됬습니다!
class Solution {
fun solution(numbers: IntArray): IntArray {
var answer: IntArray = intArrayOf()
var map = HashMap<Int , Int>()
for(i in numbers.indices){
for(j in i until numbers.size){
if(i!=j){
var sum = numbers[i]+numbers[j]
map.put(sum,sum)
}
}
}
var index = 0
answer = IntArray(map.size)
for(i in map.keys){
answer.set(index++,i)
}
answer.sort()
return answer
}
}
그러나 이런 방식은 그렇게 썩 좋은 방식이라고 할 순 없을거 같네요 ㅠㅠ
저 보다 더 좋은 코드를 밑에 예시로 남겨 놓겠습니다!!
class Solution {
fun solution(numbers: IntArray): IntArray {
var answer: MutableList<Int> = mutableListOf()
for( i in 0 until numbers.size-1){
for( j in i+1 until numbers.size){
answer.add(numbers[i] + numbers[j])
}
}
answer = answer.sorted().distinct().toMutableList()
return answer.toIntArray()
}
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
프로그래머스 콜라츠 추측 Kotlin (2) | 2021.08.16 |
---|---|
프로그래머스 위클리 2주차 문제 상호 평가 Kotlin (0) | 2021.08.14 |
프로그래머스 부족한 금액 계산하기 코틀린 위클리 챌린지 1주차 (0) | 2021.08.03 |
[코딩테스트] 소수찾기 level 1 Java 프로그래머스 (0) | 2021.06.08 |
[프로그래머스] 다리를 지나는 트럭 level 2 코틀린 (0) | 2021.06.07 |