https://school.programmers.co.kr/learn/courses/30/lessons/42862
앞 뒤 값을 쳐다보며 체육복을 가져올 수 있으면 가져오는 방법을 택했다.
- 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
'Programmers > Java, Ruby' 카테고리의 다른 글
프로그래머스 Java : 키패드 누르기 (0) | 2022.12.12 |
---|---|
프로그래머스 Java : 완주하지 못한 선수 (0) | 2022.12.09 |
프로그래머스 Java / Ruby : 푸드 파이트 (0) | 2022.12.05 |
프로그래머스 Java / Ruby : 로또의 최고 순위와 최저 순위 (0) | 2022.12.03 |
프로그래머스 Java / Ruby : 콜라 문제 (0) | 2022.12.01 |