알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
https://school.programmers.co.kr/learn/courses/30/lessons/77484?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Think🤔
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int prize = 0;
int bonus = 0;
for(int i=0; i<6; i++){
if(lottos[i] == 0){ // 0이면 알 수 없는 번호 bonus
bonus++;
continue;
}else{
for(int j=0; j<6; j++){
if(win_nums[i] == lottos[j]){
prize++;
break;
}
}
}
}
return new int[]{};
}
}
prize 당첨 , bonus는 히든 카드? 0으로 들어오는건 +가 될 수 있고, 최저를 구할때는 0으로 두면 되기 때문
마지막 return 구문만 잘 해결하면 되는데..
switch문으로 6개 맞은 사람은 , 1등! 이런식으로 해서
두번 반복문을 돌리면 해결이 되지만!
쓸데없이 구문이 길어지는 것 같음.
한번에 return할 수 있는 방법을 찾는다.
Solution✍
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int prize = 0;
int bonus = 0;
for(int i=0; i<6; i++){
if(lottos[i] == 0){ // 0이면 알 수 없는 번호 bonus
bonus++;
continue;
}else{
for(int j=0; j<6; j++){
if(lottos[i] == win_nums[j]){
prize++;
break;
}
}
}
}
return new int[]{Math.min(7-(prize + bonus),6),Math.min(7 - prize, 6)};
}
}
lottos[i] == win_nums[j] 의 위치가 바뀌어서 헤맷었다.
둘의 위치가 다르면 중간에 0,0인 부분에서 와일드카드로 넘어가버린 "1"을 검사 안해서 prize에 하나 값이 더해지지 않는다.
Review🤩
switch를 안써도 됨.
'Algorithm' 카테고리의 다른 글
[프로그래머스] 소수 만들기 (0) | 2022.07.26 |
---|---|
[프로그래머스] 체육복 (0) | 2022.07.26 |
[프로그래머스] 있었는데요 없었습니다 (0) | 2022.07.08 |
[프로그래머스] 없어진 기록 찾기 (0) | 2022.07.08 |
[프로그래머스] 헤비 유저가 소유한 장소 (0) | 2022.07.08 |