본문 바로가기

코딩 문제/프로그래머스

프로그래머스 - 코딩테스트 - Level1 - 체육복

728x90

 

풀이

 

class Solution {

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

            int answer = 0;

            int change = 1; // 변화 감지 변수

            int[] arr1 = new int[n]; // 전체 학생 배열

            // 전체 학생이 하나의 체육복을 가짐

            for(int i=0; i<n; i++){

                  arr1[i] = 1;

            }

            // 체육복을 잃어 버린 학생 구분

            for(int i=0; i<lost.length; i++){

                  arr1[lost[i]-1] = 0;

            }

            // 체육복이 2개인 학생 구분

            for(int i=0; i<reserve.length; i++){

                  if(arr1[reserve[i]-1] == 0){

                        arr1[reserve[i]-1] = 1;

                  }else{

                        arr1[reserve[i]-1] = 2;

                  }

            }

 

            // 체육복 빌려주기

            for(int i=0; i<arr1.length; i++){

                  if(arr1[i] == 2){

                        if(i==0){

                              if(arr1[i+1] == 0){

                                    arr1[i] = 1;

                                    arr1[i+1] = 1;

                                    change = 1;

                              }

                        }else if(i!=0 && i != arr1.length-1){

                              if(arr1[i-1] == 0){

                                    arr1[i-1] = 1;

                                    arr1[i] = 1;

                                    change = 1;

                              }else if(arr1[i+1] == 0){

                                    arr1[i] = 1;

                                    arr1[i+1] = 1;

                                    change = 1;

                              }

                        }else if(i == arr1.length-1){

                              if(arr1[i-1] == 0){

                                    arr1[i-1] = 1;

                                    arr1[i] = 1;

                                    change = 1;

                              }

                        }

                  }

            }

            for(int i=0; i<arr1.length; i++){

                  if(arr1[i] != 0){

                        answer++;

                  }

            }

            return answer;

      }

}

 

결과