일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Private
- assertThat()
- open ai key 발급
- 접근 제어자
- JIT
- git push
- springboot
- CLI
- 프로필 구현
- git clone
- 표준함수
- 다음 큰 숫자 풀이
- streamlit
- JVM
- 싱글톤
- 캡슐화
- git commit -m
- Public
- static
- 프로그래머스 #lv0
- java
- apply
- GitHub
- 인터프리터
- Git
- git add
- @Configuration
- 코틀린
- @SpringBootApplication
- git pull
- Today
- Total
우당탕탕 개발_𝒍𝒐𝒈
<프로그래머스>Lv0_ 머쓱이보다 키 큰 사람, 중앙값 구하기, 짝수는 싫어요 본문
<문제1> 머쓱이보다 키 큰 사람
머쓱이는 학교에서 키 순으로 줄을 설 때 몊 번째로 서야 하는지 궁금해졌습니다.
머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때,
머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.
/제한 사항/
1 <= array의 길이 <= 100
0 <= height <= 200
0 <= array의 원소 <= 200
<문제 풀이>
- 반 아이들의 키가 담긴 배열(array)를 스트림으로 변환 후 정렬 (.sorted())을 한다.
- .filter()를 사용하여 머쓱이보다 키가 큰 원소만 남긴다.
- 남은 원소의 개수를 .count()하여 합하여 return한다.
public static int solution1(int[] array, int height){
return (int) Arrays.stream(array).sorted().filter(n -> n > height).count();
- 다름 사람의 문제 풀이를 살펴보다 어짜피 filter를 사용해 머쓱이보다 큰값을 골라내니까 sorted()를 굳이 할 필요가 없었을 수도 있겠다는 생각도 들었다.
<문제2> 중앙값 구하기
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미 합니다.
예를 들어 1,2,7,10,11의 중앙값은 7입니다.
중앙값을 return하도록 solution 함수를 완성해보세요.
/제한사항/
array의 길이는 홀수 입니다.
0 < array의 길이 < 100
-1,000 < array의 원소 < 1,000
<문제풀이>
어떻게 중앙값을 찾을 수 있을까 고민하다 배열의 길이(length)와 배열의 인덱스( [ ] )개념을 적용하여 중앙값(center)을 구하면 되겠다는 생각에 다음과 같이 접근하여 문제를 해결했다.
- 배열의 길이를 2로 나눈 후 내림값을 center 변수에 담는다.
- Array.sort()를 사용하여 배열을 오름차순으로 정렬한다.
- array의 인덱스에 center값을 넣어 중앙값을 출력한다.
public static int solution1(int[] array){
int center = (int) Math.floor(array.length / 2);
Arrays.sort(array);
return array[center];
}
<문제3> 짝수는 싫어요
정수 n이 매개변수로 주어질 때, n이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution함수를 완성해주세요.
/제한사항/
1 <= n <= 100
<문제풀이>
'짝수의 합'에서 알게된 IntSream.rangClosed()를 사용하여 풀이해보았다.
https://hojeong016.tistory.com/12
- 정수 0~n 까지 요소를 스트림에 담은 후 filter()를 사용하여 홀수값만 남게 한다.
- .sorted()를 통해 남은 원자들을 오름차순으로 정렬한다.
- .toArray()를 통해 배열 타입으로 반환한다.
public static int[] solution1(int n){
return IntStream.rangeClosed(0, n)
.filter(a -> a % 2 > 0)
.sorted()
.toArray();
}
<느낀점>
오늘은 이전 문제에서 적용했던 방식을 복기 할 수 있는 문제들 위주로 나왔다.
그래서 복습하는 마음으로 즐겁게 풀었다.
'𝐬𝐭𝐮𝐝𝐲 > 𝐚𝐥𝐠𝐨𝐫𝐢𝐭𝐡𝐦' 카테고리의 다른 글
<프로그래머스>Lv_0 분수의 덧셈, 최대공약수 구하기, 유클리드 호제법 (0) | 2024.06.12 |
---|---|
<프로그래머스>Lv _0 배열 뒤집기 (2) | 2024.06.09 |
<프로그래머스>Lv_0 배열 자르기, 숨어있는 숫자의 덧셈 뺄셈,암호 해독 (0) | 2024.06.05 |
<프로그래머스>Lv_0 중복된 숫자의 값 (0) | 2024.05.28 |
<프로그래머스>Lv_0 짝수의 합 (0) | 2024.05.26 |