코딩 테스트/Level 1
두 개 뽑아서 더하기
컴닥
2020. 10. 21. 00:10
반응형
두 개 뽑아서 더하기
월간 코드 챌린지 시즌1
1861명 완료
https://programmers.co.kr/learn/courses/30/lessons/68644
코딩테스트 연습 - 두 개 뽑아서 더하기
programmers.co.kr
Python
def solution(numbers):
return sorted(list(set(numbers[i] + numbers[j] for i in range(len(numbers)) for j in range(i + 1, len(numbers)))))
def solution(numbers):
return sorted(list({numbers[i] + numbers[j] for i in range(len(numbers)) for j in range(i + 1, len(numbers))}))
solution = lambda numbers: sorted(list(set(numbers[i] + numbers[j] for i in range(len(numbers)) for j in range(i + 1, len(numbers)))))
# PEP8 위반이지만 작동합니다.
# Always use a def statement instead of an assignment statement that binds a lambda expression directly to an identifier
def solution(numbers):
answer = set()
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
answer.add(numbers[i] + numbers[j])
return sorted(list(answer))
리스트 표현식 사용하기
https://dojang.io/mod/page/view.php?id=2285
sorted와 sort의 차이
https://inma.tistory.com/137
Java
import java.util.HashSet;
class Solution {
public int[] solution(int[] numbers) {
var result = new HashSet<Integer>();
for (var i = 0; i < numbers.length; i++) {
for (var j = i + 1; j < numbers.length; j++) {
result.add(numbers[i] + numbers[j]);
}
}
return result.stream().sorted().mapToInt(Integer::intValue).toArray();
}
}
트리셋을 쓰면 이진 탐색 트리가 구현되므로 정렬도 자동으로 되지만....
import java.util.TreeSet;
class Solution {
public int[] solution(int[] numbers) {
var result = new TreeSet<Integer>();
for (var i = 0; i < numbers.length; i++) {
for (var j = i + 1; j < numbers.length; j++) {
result.add(numbers[i] + numbers[j]);
}
}
return result.stream().mapToInt(Integer::intValue).toArray();
}
}
해시셋을 쓸 때보다 느린 이유가......
헐 리턴 타입을 바꿔도 통과가 되네요..
import java.util.TreeSet;
class Solution {
public TreeSet<Integer> solution(int[] numbers) {
var result = new TreeSet<Integer>();
for (var i = 0; i < numbers.length; i++) {
for (var j = i + 1; j < numbers.length; j++) {
result.add(numbers[i] + numbers[j]);
}
}
return result;
}
}
반응형