[ Programmers ] 2021 Dev-Matching : 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 (Java)
10178 단어 Java프로그래머스알고리즘dev-matchingJava
1. Problem 📃
[ 2021 Dev-Matching : 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 ]
https://programmers.co.kr/learn/courses/30/lessons/77484
2. Constraint 🔗
3. Solution 🔑
- 등수를 먹이는 rank라는 배열을 초기화 해준다. 인덱스는 맞춘 개수, 요소는 등수를 나타내도록 {6, 5, 4, 3, 2, 1}로 초기화했다.
- 맞춘 개수를 나타내는 fit변수, 모르는 번호를 나타내는 0의 개수를 나타내는 countZero또한 선언.
- lottos의 로또 번호가 모로는 번호(0)가 아니고 win_nums의 당첨 번호와 일치 한다면 맞은 개수 fit을 증가(++) 시키고 break, 0이라면 countZero를 증가(++).
- answer 배열의 첫번째 인덱스에는 최대 등수를, 두번째 인덱스에는 최소 등수를 적어야하므로 첫번째와 두번째에 맞춘 fit값을 대입하여준다. 그리고 최대 등수(첫번째 칸)에는 countZero(0은 어떤 수든 될 수 있으므로 countZero만큼 더 맞았다고 할 수 있음.)를 더해준다.
- answer의 길이 만큼 for문을 돌려 그 안에 rank의 길이 만큼 이중 for문을 돌린다.
이때, 맞은 개수랑 같은 인덱스의 요소를 본인 answer 배열 칸의 값으로 수정하여주고 0은 rank에 없으므로 따로 if문으로 처리해준다. 그 후 answer값을 리턴.
- 등수를 먹이는 rank라는 배열을 초기화 해준다. 인덱스는 맞춘 개수, 요소는 등수를 나타내도록 {6, 5, 4, 3, 2, 1}로 초기화했다.
- 맞춘 개수를 나타내는 fit변수, 모르는 번호를 나타내는 0의 개수를 나타내는 countZero또한 선언.
- lottos의 로또 번호가 모로는 번호(0)가 아니고 win_nums의 당첨 번호와 일치 한다면 맞은 개수 fit을 증가(++) 시키고 break, 0이라면 countZero를 증가(++).
- answer 배열의 첫번째 인덱스에는 최대 등수를, 두번째 인덱스에는 최소 등수를 적어야하므로 첫번째와 두번째에 맞춘 fit값을 대입하여준다. 그리고 최대 등수(첫번째 칸)에는 countZero(0은 어떤 수든 될 수 있으므로 countZero만큼 더 맞았다고 할 수 있음.)를 더해준다.
- answer의 길이 만큼 for문을 돌려 그 안에 rank의 길이 만큼 이중 for문을 돌린다.
이때, 맞은 개수랑 같은 인덱스의 요소를 본인 answer 배열 칸의 값으로 수정하여주고 0은 rank에 없으므로 따로 if문으로 처리해준다. 그 후 answer값을 리턴.
맞은 개수(인덱스) | 0개 | 1개 | 2개 | 3개 | 4개 | 5개 | 6개 |
---|---|---|---|---|---|---|---|
등 수 | 6 | 6 | 5 | 4 | 3 | 2 | 1 |
4. Code 💻
import java.util.ArrayList;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int[] rank = {6, 5, 4, 3, 2, 1};
int fit = 0;
int countZero = 0;
ArrayList<Integer> noneFit = new ArrayList<Integer>();
for(int n : lottos) {
if(n != 0) {
for(int i=0; i<win_nums.length; i++) {
if(n == win_nums[i]) {
fit++;
break;
}
}
noneFit.add(n);
}
else {
countZero++;
}
}
answer[0] = countZero + fit;
answer[1] = fit;
for(int i=0; i<answer.length; i++) {
for(int j=0; j<rank.length; j++) {
if(answer[i] == rank[j]) {
answer[i] = j+1;
break;
}
else if(answer[i] == 0) {
answer[i] = 6;
}
}
}
return answer;
}
}
5. Growth 🍄
로또 1등으로 생활 수준 성장하고 싶다 🙏🏻
Author And Source
이 문제에 관하여([ Programmers ] 2021 Dev-Matching : 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 (Java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@tpdlqj0514/Programmers-2021-Dev-Matching-웹-백엔드-개발자상반기-로또의-최고-순위와-최저-순위-Java
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import java.util.ArrayList;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int[] rank = {6, 5, 4, 3, 2, 1};
int fit = 0;
int countZero = 0;
ArrayList<Integer> noneFit = new ArrayList<Integer>();
for(int n : lottos) {
if(n != 0) {
for(int i=0; i<win_nums.length; i++) {
if(n == win_nums[i]) {
fit++;
break;
}
}
noneFit.add(n);
}
else {
countZero++;
}
}
answer[0] = countZero + fit;
answer[1] = fit;
for(int i=0; i<answer.length; i++) {
for(int j=0; j<rank.length; j++) {
if(answer[i] == rank[j]) {
answer[i] = j+1;
break;
}
else if(answer[i] == 0) {
answer[i] = 6;
}
}
}
return answer;
}
}
Author And Source
이 문제에 관하여([ Programmers ] 2021 Dev-Matching : 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 (Java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tpdlqj0514/Programmers-2021-Dev-Matching-웹-백엔드-개발자상반기-로또의-최고-순위와-최저-순위-Java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)