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 push
- JVM
- assertThat()
- Public
- open ai key 발급
- @Configuration
- apply
- Git
- @SpringBootApplication
- java
- git add
- 표준함수
- JIT
- 프로그래머스 #lv0
- CLI
- git pull
- GitHub
- streamlit
- git clone
- 프로필 구현
- static
- Private
- 캡슐화
- git commit -m
- 다음 큰 숫자 풀이
- 코틀린
- springboot
- 인터프리터
Archives
- Today
- Total
우당탕탕 개발_𝒍𝒐𝒈
<프로그래머스>Lv_0 중복된 숫자의 값 본문
<문제>
정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때,
array에 n이 몇개 있는 지를 return하도록 solution함수를 완성해보세요.
제한사항
1 <= array의 길이 <= 100
0 <= array의 원소 <= 1,000
0<= n <= 1,000
<나의 풀이>
지난번 알게된 stream의 filter 기능을 적용해 볼 수 있겠다는 생각이 들어 적용하여 풀이해 보았다
- 배열을 스트림으로 변환한다. (int -> IntStram)
- array 에 속한 요소 중 n과 일치(==)하는 요소 필터링하여 조건에 만족하는 요소를 남긴다.
- .count()를 통해 남아있는 요소의 개수를 세어 long 타입으로 반환한다.
public static int solution2(int[] array, int n){
long stream = Arrays.stream(array) //배열 -> 스트림 변환
.filter(s->s == n) // 값이 n인 값 필터링
.count(); // 필터링된 요소의 개수를 셈
return (int) stream ;
// 실행시간
// int[] array = {1,1,2,3,4,5,1,1,1,2,3,4,1}, n = 1
// 실행시간(ms) : 2 ~ 3
<다른 사람의 풀이>
향상된 for문을 사용하여 풀이하는 방법도 있다.
public static int solution3(int[] array, int n) {
int count = 0;
// 배열의 각 요소를 반복하면서 특정 값 n과 같은지 비교
for (int num : array) {
if (num == n) {
count++;
}
}
return count; // 특정 값 n의 개수를 반환
}
// 실행시간
// int[] array = {1,1,2,3,4,5,1,1,1,2,3,4,1}, n = 1
// 실행시간(ms) : 0
<해설해보기>
향상된 for문 개념
(링크 첨부 예정)
<느낀점>
상황에 따라 최대한 효율적인 코드를 구상하는 것이 너무 어렵다는 것을 느꼈다,
어떤 상황에선 Strea을 활용하는 것이 , for, if 문을 사용하는 것이 시간복잡도를 줄일 수 있다...
여러 문제를 다양한 방법으로 접근해보는 능력을 길러야겠다.0-0
'𝐬𝐭𝐮𝐝𝐲 > 𝐚𝐥𝐠𝐨𝐫𝐢𝐭𝐡𝐦' 카테고리의 다른 글
<프로그래머스>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.26 |