반응형

문제

programmers.co.kr/learn/courses/30/lessons/42862?language=java

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번

programmers.co.kr

코드

프로그래머스 체육복

class Solution {
       
    public int solution(int n, int[] lost, int[] reserve) {

        //students
        int[] students = new int[n + 1];    //0번 인덱스 사용 X

        //lost check
        for (int i = 0; i < lost.length; i++)
            students[lost[i]] = -1;

        //reserve check
        for (int i = 0; i < reserve.length; i++)
            students[reserve[i]]++;         //lost && reserve 대비

        //borrow
        int idx = -1;
        for (int i = 0; i < lost.length; i++) {
            idx = lost[i];  //lost 학생 번호
            if (students[idx] != -1) continue;   //lost && reserve 인 경우 continue
            //다음사람에게 빌리기
            if (idx < n && students[idx + 1] == 1) {    //인덱스 체크 && ~~~
                students[idx + 1] = 0;
                students[idx] = 0;
                continue;
            }
            //이전사람에게 빌리기
            if (idx - 1 >= 1 && students[idx - 1] == 1) {       //인덱스 체크 && ~~~
                students[idx - 1] = 0;
                students[idx] = 0;
            }
        }

        //체육복 없는 학생 카운트
        int cnt = 0;
        for (int i = 1; i < students.length; i++) {
            if (students[i] == -1) cnt++;
        }

        return n - cnt;
    }//method
    
}

 

반응형

'개발 > 알고리즘' 카테고리의 다른 글

[프로그래머스] 3진법 뒤집기  (0) 2021.03.13
[프로그래머스] 2016년  (0) 2021.03.11
[USACO] 소가 길을 건너간 이유 3 백준 14469  (0) 2021.02.26
[USACO] Teleportation JAVA  (0) 2021.02.25
[USACO] Word Processor JAVA  (0) 2021.02.24
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기