ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 두 개 뽑아서 더하기
    코딩 테스트/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;
        }
    }
    반응형
Designed by Tistory.