-
[프로그래머스] 두 정수 사이의 합프로그래머스 2025. 3. 23. 18:57
JAVA
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12912
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수를 만드는 것이다.
3 과 5가 주워 지면 3 + 4+ 5 =12이런식으로 출력하는 함수만드는 것이다.
제한 조건
- a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
- a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
- a와 b의 대소관계는 정해져있지 않습니다.
CODE
풀이
□ 주의 할 것은 ' a와 b의 대소관계는 정해져있지 않습니다.' 아무렇게 넣는다는 것으로 함수내에서는 정렬할 필요가 있다. 하지만, List라는 함수랑 stream, map도 좋지만, LongStream이라는 걸 사용 해 볼것이다.
□ LongStream은 long 타입의 원소들을 처리하는 스트림이다. 기본적으로 배열이나 컬렉션을 다룰 때 성능을 최적화하기 위해 사용한다.
□ 장점으로는
- long 타입 전용 스트림
- Stream<Long> 대신 LongStream을 사용하면 오토박싱/언박싱을 피할 수 있어서 성능이 더 좋다.
- 고성능 연산 지원
- 스트림을 활용한 필터링, 매핑, 집계 연산(sum, average, max, min 등) 을 효율적으로 수행할 수 있다.
- 병렬 처리 가능
- parallel() 메서드를 사용하면 병렬 연산을 활용할 수 있어서 대량 데이터 처리에 유리하다.
□ LongStream.range(Start, end) VS LongStream.rangeClosed (Start, end)
▶ 두개의 차이는 LongStream.range(Start, end)에서 end는 for문 상 i < end (= i<= end -1) 와 같고,
LongStream.rangeClosed (Start, end)는 end는 for문 상 i <= end 와 같이 진행하여 요소를 추가해준다.
▶ LongStream은 고성능 연산 기능을 지원해 주어 요소들의 합도 가능하다.
□ 아까 ' a와 b의 대소관계는 정해져있지 않습니다.'를 주의 했다. 입력 받은 요소는 2개이므로
Math의 min과 max를 사용하여 Start와 end를 비교 반환 해줄수있도록 하자.
CODE
public long solution(int a, int b) { long answer = 0; answer = LongStream.rangeClosed(Math.min(a,b), Math.max(a, b)).sum(); return answer; }'프로그래머스' 카테고리의 다른 글
[프로그래머스] 내적 (0) 2025.04.02 [프로그래머스] 콜라츠 추측 (0) 2025.03.23 [프로그래머스] 조건에 맞는 회원수 구하기 (0) 2025.03.21 [프로그래머스] 하샤드 수 (0) 2025.03.21 [프로그래머스] 이름이 없는 동물의 아이디 (0) 2025.03.20
