프로그래머스_두 개 뽑아서 더하기 JAVA

2025. 2. 4. 22:27·알고리즘/알고리즘 풀이
반응형

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

이번에 풀 문제는 '두 개 뽑아서 더하기'다.

과거에 풀었던 문제라 과거 코드가 남아있다.

근데 진짜 푼 기억이 없는데 도대체 뭐지;;

대충 풀고 베꼈을ㄲ..ㅏ?

 

과거 코드

import java.util.*;
class Solution {
    public TreeSet<Integer> solution(int[] numbers) {
        TreeSet<Integer> answer = new TreeSet<>();
        
        for(int i = 0; i < numbers.length; i++) {
            for(int j = i+1; j < numbers.length; j++) {
                answer.add(numbers[i] + numbers[j]);
            }
        }
        
        return answer;
    }
}

과거에는  TreeSet의 자료구조로 문제를 풀었다.

 

현재 코드 - 중간

import java.util.*;
class Solution {
    public Set<Integer> solution(int[] numbers) {
        Set<Integer> answer = new HashSet<>();;
        
        for(int i = 0; i < numbers.length; i++) {
            for (int j = i+1; j <numbers.length; j++) {
                answer.add(numbers[j] + numbers[i]);
            }
        }
        
        return answer;
    }
}

익숙한 Set으로 해서 제출했다가... TreeSet을 사용한 이유를 알게됐다.

Set은 정렬이 안돼서 이중 for문 이후에 따로 정렬 코드를 추가해줘야한다.

 

현재 코드 = 과거 코드

import java.util.*;
class Solution {
    public TreeSet<Integer> solution(int[] numbers) {
        TreeSet<Integer> answer = new TreeSet<>();;
        
        for(int i = 0; i < numbers.length; i++) {
            for (int j = i+1; j <numbers.length; j++) {
                answer.add(numbers[j] + numbers[i]);
            }
        }
        
        return answer;
    }
}

 

TreeSet

특징

  • 자동 정렬 : 데이터를 넣을 때 오름차순으로 정렬해줌
  • 중복 허용 X : Set과 동일
  • 빠른 검색 : 이진 탐색 트리 구조 덕분에 데이터 검색, 추가, 삭제 속도 가 빠름

 

자동 정렬이 되는 이유는 이진 탐색 트리 구조라 그런데 이 노드의 정렬 규칙은 아래와 같다.

1. 각 노드는 왼쪽 자식과 오른쪽 자식을 가진다.

2. 왼쪽 자식 노드의 값은 부모 노드보다 작다.

3. 오른쪽 자식 노드의 값은 부모 노드보다 크다.

 

탐색 또한 정렬이 되어있어 값 비교를 통해 한 방향으로만 이동하므로 시간 복잡도가 O(log n) 수준이다.

 

중복을 제거해주면서 정렬까지 해주는 TreeSet  잊지말자~!

 

오늘도 즐,거운,코딩

반응형
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/알고리즘 풀이' 카테고리의 다른 글
  • 프로그래머스_예산 JAVA
  • 프로그래머스_기능개발 JAVA
  • 프로그래머스_체육복 JAVA
  • 프로그래머스_같은 숫자는 싫어 JAVA
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SpringBoot를 이용한 RESTful Web Service 개발
    에러해결
    Java
    운영체제
    Spring
    자바스크립트
    JPA
    방통대
    oracle
    알고리즘
    프론트엔드
    전자정부프레임워크
    기출문제
    react
    QueryDSL
    MSA
    인프런
    IT
    RESTful
    토비의스프링부트
    프로그래머스
    스프링부트
    개발자
    토이프로젝트
    백준
    SQL
    코딩테스트
    egov
    넥사크로
    springboot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
프로그래머스_두 개 뽑아서 더하기 JAVA
상단으로

티스토리툴바