Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- git clone
- springboot
- apply
- 프로그래머스 #lv0
- git commit -m
- 코틀린
- 표준함수
- 프로필 구현
- Git
- 항해99
- 다음 큰 숫자 풀이
- til
- JIT
- @Configuration
- git push
- ULID
- 접근 제어자
- git pull
- @SpringBootApplication
- streamlit
- 인터프리터
- 코딩테스트준비
- open ai key 발급
- GitHub
- git add
- assertThat()
- 99클럽
- 개발자취업
- java
- CLI
Archives
- Today
- Total
우당탕탕 개발_𝒍𝒐𝒈
<프로그래머스>Lv_0 짝수의 합 본문
<문제>
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을. return 하도록 solution 함수를 작성해주세요.
<나의 풀이>
- 정수 n이하의 짝수 값을 구하여 공간의 제약이 없는 ArrayList에 담기
- 짝수값을 구하기 위해 n % 2 ==0
- ArrayList를 Array로 변경 후 배열의 총합(total) return하기
public static int Solution(int n) {
ArrayList<Integer> sum = new ArrayList<>();
int total = 0;
for (int i = 0; i <= n; i++) {
if (i % 2 == 0) {
sum.add(i);
}
}
int[] array = sum.stream().mapToInt(Integer::intValue).toArray();
for (int i = 0; i < array.length; i++) {
total += array[i];
}
return total;
}
// 실행시간
// n = 100000
// 실행시간(ms) : 10
어제 '평균값 구하기' 때 사용했던 배열의 총합 구하는 방법을 복습하여 문제를 풀어보고 싶은 마음이 있었다.
더보기
int a =0;
a += arry[i] == a= a+arry[i]_
<다른 사람의 풀이>
import java.util.stream.IntStream;
class Solution {
public int solution(int n) {
return IntStream.rangeClosed(0, n)
.filter(e -> e % 2 == 0)
.sum();
}
}
// 실행시간
// n = 100000
// 실행시간(ms) : 5
<해설해보기>
- IntStream. range vs IntStream.rangeClosed : 두 메서드 모두 시작값과 종료값을 인자로 받지만 인자값에 종료값의 포함 여부 차이가 있다. 즉 IntStream.rangeClosed (0, n)은 0부터 n까지 종료값까지 인자값으로 가져오게 된다.
- Stream에서 원하는 요소를 선택하여 새로운 Stream을 생성해준다.
- .sum()을 통해 합계를 구한다.
<느낀점>
'나의 풀이'에서 굳이 굳이 for문을 두번 쓰고 stream을 배열로 변환하지 않아도 되었지만.. 배열의 전체 합 구하기 복습을 해보고 싶은 마음에 시간복잡도 측면에서 엄청 비효율적인 코드가 탄생해버렸다....
덕분에 for문 대신 IntStream. range 을 사용하여 인자를 담는 방법이 이런 유형의 문제에서는 시간복잡도 측면에서 매우 효율적인 것을 알게 되었다.
다음번에 비슷한 유형의 문제를 만나면 꼭 사용해 보자:)
'𝐬𝐭𝐮𝐝𝐲 > 𝐚𝐥𝐠𝐨𝐫𝐢𝐭𝐡𝐦' 카테고리의 다른 글
<프로그래머스>Lv_0 분수의 덧셈, 최대공약수 구하기, 유클리드 호제법 (0) | 2024.06.12 |
---|---|
<프로그래머스>Lv _0 배열 뒤집기 (2) | 2024.06.09 |
<프로그래머스>Lv_0 배열 자르기, 숨어있는 숫자의 덧셈 뺄셈,암호 해독 (0) | 2024.06.05 |
<프로그래머스>Lv0_ 머쓱이보다 키 큰 사람, 중앙값 구하기, 짝수는 싫어요 (0) | 2024.05.29 |
<프로그래머스>Lv_0 중복된 숫자의 값 (0) | 2024.05.28 |