문제 출처 - Programmers
문제는 여기
[풀이]
1. lottos의 배열을 한번 탐색하면서 0의 개수, 즉 모르는 개수를 구한다.
2. 또한 1. 을 실행하면서 같은 값이 있다면 맞는 번호이므로 총 맞는 개수를 구해준다.
3. 7 - 개수 == 등수가 되므로 해당 방법을 사용해 등수를 구한다.
4. 3. 에서 최고값을 구하든 최솟값을 구하든 7이 나오면 문제가 발생하므로 해당 부분을 예외처리해준다.
5. 결과를 출력한다.
[접근]
1. 0의 개수를 구해서 0이 모두 맞는 번호가 된다는 가정으로 최댓값을 구하고 하나도 맞지 않는다는 가정으로 최솟값을 구하면 될 것이라고 생각하였다.
[코드]
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int zero = 0;
int count = 0;
int[] answer = new int[2];
for (int i = 0; i < lottos.length; i++) {
// 모르는 번호 개수 구하기
if (lottos[i] == 0) {
zero++;
continue;
}
// 맞는 숫자 개수 구하기
for (int j = 0; j < win_nums.length; j++) {
if (win_nums[j] == lottos[i])
count++;
}
}
// 1 -> 6개
// 2 -> 5개
// 3 -> 4개
// 4 -> 3개
// 5 -> 2개
// 6 -> 1이하
// 7 - 갯수 == 등수
// 단, 7로 계산을 하면 7이 출력될 수 있으므로 해당 부분을 처리해줘야 함
// 모르는 번호가 다 맞다고 가정
answer[0] = 7 - (count + zero) >= 6 ? 6 : 7 - (count + zero);
// <= 1 ? 1 : 7 - (count + zero);
// 모르는 번호가 다 틀렸다고 가정
answer[1] = 7 - count >= 6 ? 6 : 7 - count;
return answer;
}
}
'문제 풀이 > Programmers' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 (JAVA) (0) | 2022.03.23 |
---|---|
[프로그래머스] 기능개발 (JAVA) (0) | 2022.03.22 |
[프로그래머스] [1차] 뉴스 클러스터링 (JAVA) (0) | 2022.03.18 |
[프로그래머스] 없는 숫자 더하기 (JAVA) (0) | 2022.03.17 |
[프로그래머스] 3진법 뒤집기 (JAVA) (0) | 2022.03.16 |