-
두 개 뽑아서 더하기코딩 테스트/Level 1 2020. 10. 21. 00:10반응형
두 개 뽑아서 더하기
월간 코드 챌린지 시즌1
1861명 완료https://programmers.co.kr/learn/courses/30/lessons/68644
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=2285sorted와 sort의 차이
https://inma.tistory.com/137Java
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; } }
반응형