Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 선형 조사법
- singly linked list
- 루트노드
- Open-Addressing
- 이진 큐
- 배열
- 직접 주소 개방
- ListIterator
- 향상된 for문
- 부모 노드
- 객체 배열
- Double형 배열
- 단말노드
- 큐
- Quadratic Probing
- 해시 테이블
- java
- Queue
- binary queue
- Gargbae Collector
- Double Hasing
- 조상 노드
- 노드 레벨
- 자료구조
- Linear Probing
- 이차 조사법
- 자식 노드
- 자바
- array
- 트리 높이
Archives
- Today
- Total
영운's 블로그
[프로그래머스 Lv1] 로또의 최고 순위와 최저 순위(Java) 본문
https://programmers.co.kr/learn/courses/30/lessons/77484?language=java
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
0은 지워진 번호라고 가정하고 최대 몇등 최소 몇등인지 찾아내는 문제다.
핵심은 lottos[]에 맞는 숫자가 1개 이하일 때 어떻게 처리할가 이다.
숫자가 2개 이상 맞는 경우 최소당첨 등수: 7 - (맞춘 숫자 개수)
최대당첨 등수: 7 - (맞춘 숫자 개수 + 0 개수)
가 성립하지만 숫자가 1개 이하인 경우 성립하지 않기 때문이다. (1개이하의 숫자를 맞춘 경우 당첨금이 없다.)
Math클래스의 min() 함수를 이용하여 이를 해결하였다.
7 - xx가 6보다 작은 경우 6이 되도록 만들었다.
import java.lang.Math;
public class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int erased_cnt = 0;
int winning_cnt = 0;
int j = 0;
for (int lot_num : lottos) {
if (lot_num == 0)
erased_cnt++;
else {
for (int win_num : win_nums) {
if (lot_num == win_num)
winning_cnt++;
}
}
}
int min = Math.min(7 - winning_cnt, 6);
int max = Math.min(7 - (winning_cnt + erased_cnt), 6);
return new int[]{max, min};
}
public static void main(String[] args) {
int[] lottos = {44, 1, 0, 0, 31, 25};
int[] win_nums = {31, 10, 45, 1, 6, 19};
Solution sol = new Solution();
int[] answer = sol.solution(lottos, win_nums);
System.out.printf("[%d, %d]",answer[0],answer[1]);
}
}
'백준 , 프로그래머스 풀이 > 프로그래머스 Lv1 (Java)' 카테고리의 다른 글
[프로그래머스Lv1] 실패율 (Java) (0) | 2022.04.13 |
---|---|
[프로그래머스Lv1] 신규 아이디 추천 (Java) (0) | 2022.04.01 |
[프로그래머스 Lv1] 숫자 문자열과 영단어(Java) (0) | 2022.03.29 |
Comments