티스토리 뷰
이번에는 나름 레벨업을 해 보고자 stream을 적극 사용하고자 하였다.
먼저 접근 전략은
1. 최저로 맞힌 갯수 는 0의 여부와는 상관없으니, 기존에 있는 숫자들로 계산한다.
2. 최고로 맞힌 갯수는 0이 무조건 맞는 숫자인 경우라고 생각하면 되니까, 최저 등수에 0의 갯수를 더해준다.
3. 7에서 맞힌 갯수를 빼면 등수가 나오는데 다 틀린 경우, 즉 맞힌 갯수가 0이어서 7이 될때도 6등이 되어야 하니 이 부분만 따로 예외 처리를 해 준다.
stream을 0의 갯수를 찾을 때 사용해 봤는데, 확실히 for문 쓰는 것 보다야 코드가 간결해 지는 것 같다.
먼저 0의 갯수를 cnt라고 하고, lottos를 리스트로 변환한다.
그리고 lottos와 win_nums를 비교해서 같은 숫자가 있는지를 보는 것이다.
lottoList의 stream을 생성하고,
int cnt = lottosList.stream()
.filter와 람다를 통해 겹치는 숫자가 있는 지를 걸러낸다.
int cnt = lottosList.stream().filter(num -> num.equals(i))
그리고 count()라는 종결함수를 통해 겹치는 숫자의 갯수를 세어준다. 다만 count의 반환타입은 long이어서 int로 강제 형변환을 해 준다.
int cnt = (int) lottosList.stream().filter(num -> num.equals(i)).count();
#풀이 코드
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
// ㅣlottos 리스트로 변환
List<Integer> lottosList = new ArrayList<>();
for (int i = 0; i < lottos.length; i++) {
lottosList.add(lottos[i]);
}
// 0 여부와 상관없이 현재 있는 값들을 이용해서 최저 순위 계산.
int min = 0;
for (int i : win_nums){
int cnt = (int) lottosList.stream().filter(num -> num.equals(i)).count();
min += cnt;
}
// 0이 다 맞으면 최고 순위.
int max = min;
for (int i : lottos){
if (i == 0){
max++;
}
}
int[] answerArr = {max, min};
int[] answer = {7-max, 7-min};
if (7-max == 7){
answer[0] = 6;
}
if (7-min == 7){
answer[1] = 6;
}
return answer;
}
}
'알고리즘 문제' 카테고리의 다른 글
[프로그래머스] 실패율 구하기 (0) | 2023.01.01 |
---|---|
[프로그래머스] 피보나치 수 (0) | 2022.12.24 |
[프로그래머스] 배열자르기 (0) | 2022.11.22 |
[프로그래머스] 피자 나눠 먹기(2) (0) | 2022.11.10 |
[프로그래머스] 최빈값 구하기 java (0) | 2022.11.09 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 항해
- index
- 스프링faker
- CorrectnessAndTheLoopInvariant
- CheckedException
- 동적크롤링
- Python
- 프로그래머스
- EC2
- Spring
- Java
- jmeter쿠키
- hackerrank
- jmeter부하테스트
- 인덱스
- jmeter토큰
- Redisson
- Redis
- jmeter로그인
- 부하테스트시나리오
- jwt
- 자바
- Lock
- 토큰
- jmeter테스트
- pessimisticlock
- 대규모더미데이터
- jmeter시나리오
- jmeter세션
- bankersRounding
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함