프로그래머스 로또의 최고 순위와 최저 순위

김민진·2021년 11월 30일
0

알고리즘

목록 보기
1/4

로또의 최고 순위와 최저 순위

문제는 로또프로그램과 동일하며 0이라는 특이한 케이스가 추가되었고

0이 모두 맞을때,맞지 않을때의 2가지 케이스를 구하는 거였다.

 class Solution {
        public int[] solution(int[] lottos, int[] win_nums) {
            int[] answer = {7, 7};
            int lottosLength = 0;
            int win_numsLength = 0;
            for (lottosLength = 0; lottosLength < lottos.length; lottosLength++) {
                for (win_numsLength = 0; win_numsLength < win_nums.length; win_numsLength++) {
                    if (lottos[lottosLength] == win_nums[win_numsLength]) {
                        answer[0]--;
                        answer[1]--;
                        break;
                    }
                    if (lottos[lottosLength] == 0) {
                        answer[0]--;
                        break;
                    }
                }

            }
            if (answer[0] == 7) answer[0]--;
            if (answer[1] == 7) answer[1]--;

            return answer;
        }
    }

내 해답은 이렇다.

테스트 1 〉	통과 (0.02ms, 68.3MB)
테스트 2 〉	통과 (0.02ms, 73.4MB)
테스트 3 〉	통과 (0.01ms, 74.1MB)
테스트 4 〉	통과 (0.02ms, 76.7MB)
테스트 5 〉	통과 (0.02ms, 81.7MB)
테스트 6 〉	통과 (0.03ms, 77.2MB)
테스트 7 〉	통과 (0.01ms, 78.5MB)
테스트 8 〉	통과 (0.02ms, 74MB)
테스트 9 〉	통과 (0.02ms, 73.6MB)
테스트 10 〉	통과 (0.02ms, 75.3MB)
테스트 11 〉	통과 (0.02ms, 75.9MB)
테스트 12 〉	통과 (0.01ms, 76.2MB)
테스트 13 〉	통과 (0.01ms, 74.3MB)
테스트 14 〉	통과 (0.01ms, 78.3MB)
테스트 15 〉	통과 (0.01ms, 82.2MB)

시간은 0.01~0.03 이고 용량은 최저 68.3 최고 82.2mb였다

뭔가 드럽게 오래걸리고 엄청 용량이 크네.. 라고 생각은했지만 이제 시작이니까..

문제를 한번 쭉 풀고

나중에는 그 문제를 다시 풀어서 왜 시간이 줄고 왜 용량이 주는지 다시한번 검토해보는 과정을 거치면 좋겠다.

처음에는

   int[] answer = {0, 0};
        int rankA = 0;
        int rankF = 0;
        int lottosLength = 0;
        int win_numsLength = 0;
        for (lottosLength = 0; lottosLength < lottos.length; lottosLength++) {
            for (win_numsLength = 0; win_numsLength < win_nums.length; win_numsLength++) {
                if (lottos[lottosLength] == win_nums[win_numsLength]) {
                    rankA++;
                    rankF++;
                    break;
                }
                if (lottos[lottosLength] == 0) {
                    rankA++;
                    break;
                }
            }
        }
        answer[0] = rankA;
        answer[1] = rankF;
        return answer;
    }
    ```
처음에는 이렇게 문제를 접근했다.

그런데 정답도 다르고 숫자도 다르기도하고.. 그래서 잘 보니까 그냥 7에서 빼주면 되겟네 하고

7에서 빼주는 방향으로 해버리니
7등이 나와버리더라... 그래서 7일경우에는 하나씩 빼주는걸로 타협을 보았다.

오래간만에 해보니까 재미있네... 자주 해봐야지

그런데 문제 12번이 뭔지 모르겠는데 처음에는 계속 틀리다고 나왔는데 

나중에는 결국 맞다고 처리를 해주었다..

왜 틀린건지 좀더 상세했으면 좋겠다 ㅜㅜ
profile
dart,c#,java 개발자! 잡다하게 해서 문제될게 없다!

0개의 댓글