- 진행
| 일자 | 완료 번호 | 
| 24.07.16 | 1~20 | 
| 24.07.17 | 21~35 | 
| 24.07.18 | 36~42 | 
| 24.07.19 | 43~47 | 
| 24.07.22 | 48~50 | 
| 24.07.23 | 51~55 | 
| 24.07.24 | 56~57 | 
| 24.07.25 | 58 | 
| 24.07.26 | 59~60 | 
| 24.07.29 | 61 | 
- 회고
61. https://school.programmers.co.kr/learn/courses/30/lessons/77484
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        List<Integer> li = new ArrayList<>();
        Arrays.sort(lottos);
        int joker = 0;
        for (int i = 0; i < lottos.length; i++) {
            if (lottos[i] != 0) {
                li.add(lottos[i]);
            } else {
                joker++;
            }
        }
        int cnt = 0;
        for (int n : win_nums) {
            if (li.contains(n)) {
                cnt++;
            }
        }
        int min = cnt;
        int max = joker + cnt;
        int[] answer = new int[2];
        if(max < 2){
            answer[0] = 6;
            answer[1] = 6;
        }else {
            answer[0] = 7 - max;
            answer[1] = cnt >= 1 ? 7 - min : 6;
        }
        return answer;
    }
}- 풀이과정
- 내 로또 번호를 리스트에 저장
- 값이 0인 경우와 아닌경우로 분리
- 당첨 배열에 들어있는지 여부 확인(list.contains메서드 사용)
- 최소값 min은 cnt값
- 최대값 max는 cnt + joker(확인 불가한 번호)
- 최대값이 2 미만이라면 최저, 최고의 경우 모두 6등
- 아닌 경우 최대는 7 - cnt
- 최소는 cnt가 2이상면 7-cnt 2미만이면 6등
- 회고
- 처음에 다음과 같은 경우를 누락
 → max값이 2미만인경우 6둥(7등은없음)
'Java & Spring > 코딩테스트' 카테고리의 다른 글
| 13일차 - 알고리즘 코드카타(시간초과) (0) | 2024.07.31 | 
|---|---|
| 12일차 - 알고리즘 코드카타(실패) (0) | 2024.07.31 | 
| 10일차 - 알고리즘 코드카타 (0) | 2024.07.26 | 
| 9일차 - 알고리즘 코드카타 (0) | 2024.07.25 | 
| 8일차 - 알고리즘 코드카타 (1) | 2024.07.24 |