[필요개념]
> 단순화, 그게 제일 필요함. 이번에 푼 문제는 너무 돌아간 경향이 있음 (하단코드 참조)
[알게된 것]
> 특정 값을 Collections 객체에서 개수를 세는법
이 코드 진짜 깔끔하니 참고하자
// int[] answer = new int[2];
// int cnt1 = 0;
// int cnt2 = 0;
로또번호 for문
// for(int i : lottos) {
만약 0이 있을 경우 카운트 게시하고 다시 for문 처음으로 돌아옴
// if(i == 0) {
// cnt1++;
// continue;
// }
만약 0이 아닐 경우, win for문으로 하나하나 추출해 lottos에 있는 값인지 카운트 게시
// for(int j : win_nums) {
// if(i == j) cnt2++;
// }
// }
// answer[0] = getGrade(cnt1+cnt2);
// answer[1] = getGrade(cnt2);
// return answer;
// }
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int correctMax = 0;
int correctMin = 0;
//ArrayList, HashSet생성
HashSet<Integer> lottoset = new HashSet<>();
ArrayList<Integer> winset = new ArrayList<>();
ArrayList<Integer> zeroCount = new ArrayList<>();
//각 자료구조에 값 넣기
for(int lotto:lottos){
lottoset.add(lotto);
}
for(int win:win_nums){
winset.add(win);
}
for(int lotto:lottos){
zeroCount.add(lotto);
}
//win로또에 있는 숫자들이 lottoset 집합에 몇 개 있는지 세기
for(int i=0; i<winset.size(); i++){
if(lottoset.contains(winset.get(i))){
correctMin++;
}
}
//zero 개수 세기위한 메소드
correctMax = Collections.frequency(zeroCount,0);
//zero 개수 + win에 속한 숫자들 센 것들 개수
correctMax += correctMin;
int[] answer = {Math.min(7-correctMax,6),Math.min(7-correctMin,6)};
return answer;
}
}
public class Hello {
public static void main(String[] args) {
Solution test = new Solution();
int [] p = new int[]{44,1,0,0,31,25};
int [] s = new int[]{31,10,45,1,6,19};
System.out.println(test.solution(p,s));
}
}
'프로그래머 ,백준, 유튜브, 문제' 카테고리의 다른 글
소수만들기_프로그래머스 (1) | 2022.09.26 |
---|---|
문자열 내 마음대로 정렬하기_프로그래머스 (1) | 2022.09.26 |
최소직사각형_프로그래머스 (0) | 2022.09.25 |
3진법 뒤집기_프로그래머스 (0) | 2022.09.25 |
하샤드 수_프로그래머스 (1) | 2022.09.25 |
댓글