본문 바로가기

프로그래머스/JAVA

007. 체육복[JAVA]

0. 사용 함수

  • Arrays.fill(배열, 값)  >> (배열전체에 지정값으로 세팅해주는 함수)

 

1. 문제 내용

  • 설명

체격순으로 출석번호를 매김.

그래서 여벌 체육복을 가지고 있으면 내 뒷번호의 사람에게만 체육복을 빌려줄 수 있음.

단, 내가 한 벌 이하이면 빌려줄 수 없음.

(내가 여벌체육복이 있는데 만약 도둑맞았다면 결론 적으로 나는 한 벌이므로 빌려줄 수 없음)

 

  • 제한 사항

   전체 학생의 수는 2명 이상 30명 이하입니다.
   체육복을 도난당한 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다.
   여벌의 체육복을 가져온 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다.
   여벌 체육복이 있는 학생만 다른 학생에게 체육복을 빌려줄 수 있습니다.
   여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다.

 

2. 문제 풀이

import java.util.Arrays;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = n;
        int []std = new int[n];
        
        Arrays.fill(std, 1);
        for (int i : lost)
            std[i - 1] -= 1;
        for (int i : reserve)
            std[i - 1] += 1;
        for (int i = 0; i < std.length; i++) {
            if (std[i] == 0) {
                if (i > 0 && std[i - 1] == 2) //왼쪽 검사
                    std[i - 1] -= 1;
                else if (i < n - 1 && std[i + 1] == 2) //오른쪽 검사
                    std[i + 1] -= 1;
                else
                    answer--;
            }
        }
        return answer;
    }
}

 

 

3. 채점 결과

  • 정확성 테스트
테스트 1  통과 (0.40ms, 77.4MB)
테스트 2  통과 (0.18ms, 72.7MB)
테스트 3  통과 (0.16ms, 72MB)
테스트 4  통과 (0.15ms, 77.3MB)
테스트 5  통과 (1.32ms, 71.4MB)
테스트 6  통과 (1.71ms, 76.8MB)
테스트 7  통과 (18.63ms, 83.8MB)
테스트 8  통과 (10.01ms, 74.7MB)
테스트 9  통과 (34.94ms, 84.7MB)
테스트 10  통과 (17.33ms, 77.7MB)
테스트 11  통과 (28.80ms, 90.4MB)
테스트 12  통과 (23.45ms, 81.5MB)
테스트 13  통과 (6.22ms, 76.9MB)
테스트 14  통과 (26.09ms, 91.3MB)

처음에는 해쉬맵으로 학생 수 넣고

lost(잃어버린 학생)배열 처리하고, reserve(여벌 체육복 있는 학생)배열 처리하고, 덧셈뺄셈 장황한 코드를 짰는데

더하고 빼주는 과정에서 어긋나서 에러가 나길래 그냥 검색해봤다.

다른 분이 한 걸 그냥 복붙한 수준이긴 한데 훨씬 간단한 방식으로 짜서 좀 놀랐다.

좀 차분히 생각해보고 짤 걸 

문제를 보고 고대로 읽어가며 짰더니 코드도 더럽고

코드가 더러운만큼 실수도 많다..

반성....

세상에 똑똑한 사람이 너무 많아서 곤란하다...😳

'프로그래머스 > JAVA' 카테고리의 다른 글

008. 폰켓몬[JAVA]  (0) 2022.05.22
006. 모의고사[JAVA]  (0) 2021.12.30
004. 소수 만들기[JAVA]  (0) 2021.12.23
002. [카카오 인턴] 키패드 누르기[JAVA]  (0) 2021.12.18
001. 로또의 최고 순위와 최저 순위[JAVA]  (0) 2021.12.13