알고리즘

[프로그래머스] 로또의 최고 순위와 최저 순위 - JAVA

멍띠 개발 2021. 11. 1. 23:51

1단계 무난히 풀수 있는 문제 였습니다.

if문과 for문만 잘 사용한다면 쉽게 풀 수 있을거 같습니다

 

정렬해서 푸는 방법도 있지만, 저는 정렬을 사용하지 않고 풀었습니다.

 

 

나의 풀이

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        
        for(int i=0; i<lottos.length;i++){
            if(lottos[i]==0){//로또 번호 0인값 체크
                answer[0]++; // 0번째 인덱스에는 최대 많이 맞춘 갯수를 넣기 위해 추가
                continue;
            }
            for(int j=0; j<win_nums.length;j++){
                if(lottos[i]== win_nums[j]){ //로또번호가 맞을 경우
                    answer[0]++;// 0번째 인덱스에는 최대한 많이 맞춘 갯수를 넣기위해 추가
                    answer[1]++;// 1번째 인덱스는 가장 적게 맞춘 갯수를 넣기 위해 일치할때만 증가
                    break;
                }
            }
        }
  
        for(int i=0; i<2;i++){ // 0번째, 1번째 인덱스
             if(answer[i]==6)answer[i]=1; //1등
             else if(answer[i]==5)answer[i]=2;//2등
             else if(answer[i]==4)answer[i]=3;//3등
             else if(answer[i]==3)answer[i]=4;//4등
             else if(answer[i]==2)answer[i]=5;//5등
             else answer[i]=6;//꼴등
        }
        return answer;
    }
}

 

 

 


다른 풀이

import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
        int zeroCount = 0;

        for(int lotto : lottos) {
            if(lotto == 0) {
                zeroCount++;
                continue;
            }
            map.put(lotto, true);
        }


        int sameCount = 0;
        for(int winNum : win_nums) {
            if(map.containsKey(winNum)) sameCount++;
        }

        int maxRank = 7 - (sameCount + zeroCount);
        int minRank = 7 - sameCount;
        if(maxRank > 6) maxRank = 6;
        if(minRank > 6) minRank = 6;

        return new int[] {maxRank, minRank};
    }
}

 

아직 검색이나 자동완성이 없는 경우

 

Map, Set 같은 자료구조를 사용하기 힘들어서 시도해보지 못했다.

자동완성이 없을 때도 사용 할 수 있게 연습을 계속 해야겠다.

 

https://programmers.co.kr/learn/courses/30/lessons/77484?language=java#

'알고리즘' 카테고리의 다른 글

[백준] 4963 : 섬의개수 - JAVA  (0) 2021.12.07
[백준] 2178 : 미로탐색 - JAVA  (0) 2021.11.01