일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Aspect
- oracle
- Java
- DART
- eqauls-hashcode
- @RequestBody
- class-transformer
- maven
- TypeScript
- node.js
- 봤어요처리
- tecoble
- flutter mac 설치
- 프로젝트 여러 개
- JavaScript
- InteliJ
- javascript error
- Spring
- svn
- 프로그래머스
- SQL
- db
- Stream
- datagrip 한글깨짐
- 코어자바스크립트
- REST
- Mac
- ojdbc6
- 인텔리제이
- MySQL
Archives
- Today
- Total
개발자가 되고 싶은 개발자
[Algorithm] 프로그래머스- 로또의 최고 순위와 최저 순위 본문
문제
코드
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int zeroCnt = 0;
int chkMatched = 0;
for(int i : lottos) {
if (i == 0) zeroCnt ++;
else {
for ( int j : win_nums) {
if(i == j) {
chkMatched++;
break;
}
}
}
}
int min = chkMatched;
int max = chkMatched + zeroCnt;
int[] answer = {Math.min(7-max, 6), Math.min(7-min, 6)};
return answer;
}
}
풀이
- 민우의 로또 번호가 담긴 lottos[ ], 당첨 번호가 담긴 win_nums[ ]
- 민우의 로또 번호에는 동생의 낙서로 인해, 일부 번호가 0값으로 들어가 있다.
- 민우의 로또 번호 배열을 순회하며 0을 찾아 카운트 해주었다.
- 당첨 번호와 일치하는 값을 찾아 카운트 해주었다. 로또 번호 중 중복값은 없으므로 값을 찾으면 break.
- 최소 일치하는 번호의 개수를 카운트 한 변수인 chkMatched를 min에 저장해준다.
- 0이 만약 전부 당첨 번호라면 min과 0을 카운트 한 값이 최대 일치하는 수이다. 둘을 더하여 max값에 넣어준다.
- 위 이미지와 같이 일치하는 수에 따라서 순위가 정해진다.
- switch문을 사용하여도 가능하고 다른 방법으로도 가능하다.
- 위 표에서 순위와 일치하는 번호의 규칙을 찾아보면 7-순위=일치하는 번호 임을 알 수 있다.
회고
- 글로서 풀이를 적어보는 것은 또 다른 느낌...
- 이제 level1 푼다고 조급해하면서 이것저것 손만 벌리면 어중이떠중이가 된다. 벌써 10월! 정신차리자
'Dev > Algorithm' 카테고리의 다른 글
[Algorithm] 유형 목록 (0) | 2022.06.11 |
---|---|
[Algorithm] 프로그래머스 레벨2 124나라의 숫자 (0) | 2022.01.06 |
[Algorithm] Euclidean Algorithm (0) | 2021.11.07 |
[Algorithm] Greedy Algorithm (0) | 2021.11.02 |
[Algorithm] 신규 아이디 추천 (0) | 2021.10.07 |