프로그래머스_C#/Level_1

[프로그래머스 C#] 체육복

최애뎡 2021. 9. 6. 00:10
728x90
반응형

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

 

코딩테스트 연습 - 체육복

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

programmers.co.kr

using System;
using System.Collections.Generic;
using System.Linq;

public class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        
        List<int> _lost = lost.ToList();
        List<int> _reserve = reserve.ToList();
        _lost.Sort(); _reserve.Sort();
        
        for (int i = -1; ++i < lost.Length;)
            for (int j = -1; ++j < reserve.Length;)
            {
                if (lost[i] == reserve[j]) 
                {
                    _lost.Remove(lost[i]);
                    _reserve.Remove(lost[i]);
                }
            }
        
        answer = n - _lost.Count;
        
        for (int i = -1; ++i < _lost.Count;)
            for (int j = -1; ++j < _reserve.Count;)
            {
                int range = _lost[i];
                
                if (_reserve.Contains(range - 1))
                {
                    _reserve.Remove(range - 1);
                    ++answer;
                    break;
                }
                else if (_reserve.Contains(range + 1))
                {
                    _reserve.Remove(range + 1);
                    ++answer;
                    break;
                }
            }
        
        return answer;
    }
}

문제상 lost, reserve가 정렬이 되어있을지 안되어있을지 모르고 잃어버렸는데 여분이 있을 수 있는 경우가 있기 때문에 List로 받아와서 정렬 후 겹치는 부분 제거 

그러면 일단 전체 수 - 잃어버린 친구들 하고 reserve에서 살릴 수 있는 애들 살려주기

반응형