본문 바로가기
개발/문제풀이

문제풀이) 프로그래머스)C# 체육복

by 테샤르 2020. 8. 19.

체육복

URL :https://programmers.co.kr/learn/courses/30/lessons/42862

 

코딩테스트 연습 - 체육복

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

programmers.co.kr

전체 학생 중에서 잃어버린 학생의 데이터를 차감 후, 예비 체육복을 가진 친구들이 빌려준다는 훈훈한 이야기의 문제풀이이다. 탐욕 알고리즘은 정해진 알고리즘의 형태가 있기보다는 '현재 상태에서 최선의 수'만 선택한다에 의의를 두면 된다.

반응형
public int Solution(int n, int[] lost, int[] reserve) {
        int answer = 0;

        List<int> checkList = new List<int>();
        for(int i = 0;i < n;i++){
            checkList.Add(i+1);
        }

        for(int i =0;i<lost.Length;i++){
            int value = lost[i];

            if(true == reserve.Contains(value)){
                reserve= reserve.Where(val => val != value).ToArray();
            }
            else{
                checkList.Remove(value);
            }
        }

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

            int value = reserve[i];
      
            int backIndex = reserve[i]-1;
            int frontIndex = reserve[i]+1;
            if(false == checkList.Contains(backIndex)){
                if(backIndex > 0){
                    checkList.Add(backIndex);
                }
            }
            else if(false == checkList.Contains(frontIndex)){

                if(frontIndex < n){
                    checkList.Add(frontIndex);
                }
            }
        }
        
        answer = checkList.Count;
        return answer;
    }

 

 ★

 

반응형

댓글