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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


앞 뒤 값을 쳐다보며 체육복을 가져올 수 있으면 가져오는 방법을 택했다.

- Java

import java.util.Arrays;
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int[] cnt = new int[n];
        Arrays.fill(cnt,1);
        for(int i=0;i<lost.length;i++)
            cnt[lost[i]-1]--;
        for(int i=0;i<reserve.length;i++)
            cnt[reserve[i]-1]++;
        
        
        if(cnt[0]==0)
            if(cnt[1]==2){
                cnt[0]++;cnt[1]--;
            }
        for(int i=1;i<n-1;i++){
            if(cnt[i]==0){
                if(cnt[i-1]==2){
                    cnt[i]++;cnt[i-1]--;
                }
                else if(cnt[i+1]==2){
                    cnt[i]++;cnt[i+1]--;
                }
            }
        }
        
        if(cnt[n-1]==0)
            if(cnt[n-2]==2){
                cnt[n-1]++;cnt[n-2]--;
            }
        
        int answer = n;
        for(int i=0;i<n;i++)
            if(cnt[i]==0)
                answer--;
        return answer;
    }
}

 

- Ruby

def solution(n, lost, reserve)
    cnt=Array.new(n,1)
    lost.each{|l|
        cnt[l-1]=cnt[l-1]-1
    }
    reserve.each{|r|
        cnt[r-1]=cnt[r-1]+1
    }
    if cnt[0]==0
        if cnt[1]==2
            cnt[0]=1
            cnt[1]=1
        end
    end
    
    for i in 1..n-1
        if cnt[i]==0
            if cnt[i-1]==2
                cnt[i]=1
                cnt[i-1]=1
            elsif cnt[i+1]==2
                cnt[i]=1
                cnt[i+1]=1
            end
        end
    end
    
    if cnt[n-1]==0
        if cnt[n-2]==2
            cnt[n-1]=1
            cnt[n-2]=1
        end
    end
    
    return n-cnt.count(0)
end

+ Recent posts