출처 https://school.programmers.co.kr/learn/courses/30/lessons/42862
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
Map<Integer,Integer> map=new HashMap<>();
for(int i=1;i<=n;i++){
map.put(i,1);
}
for(int i=0;i<lost.length;i++){
map.put(lost[i],map.get(lost[i])-1);
}
for(int i=0;i<reserve.length;i++){
map.put(reserve[i],map.get(reserve[i])+1);
}
System.out.println(map);
for(int i=1;i<=n;i++){
if(i==1&&map.get(i)==0&&map.get(i+1)==2){
map.put(i,map.get(i)+1);
map.put(i+1,map.get(i+1)-1);
}
else if(map.get(i)==0&&i!=n&&i!=1){
if(map.get(i-1)==2){
map.put(i,map.get(i)+1);
map.put(i-1,map.get(i-1)-1);
}
else if(map.get(i+1)==2){
map.put(i,map.get(i)+1);
map.put(i+1,map.get(i+1)-1);
}
}
else if(map.get(i)==0&&i==n&&map.get(i-1)==2){
map.put(i,map.get(i)+1);
map.put(i-1,map.get(i-1)-1);
}
}
for(int i=1;i<=n;i++){
if(map.get(i)!=0)answer++;
}
System.out.println(map);
return answer;
}
}
map을 활용하여 key에 1부터 n까지의 학생을 넣고 value에 1을 넣은 뒤 lost에 해당하는 학생들은 -1 reserve에 해당하는 학생은 +1 하였습니다.
이 후에 1,1과 n이 아닌 학생, n인 학생을 구분하여 0인 학생 중에 자신의 바로 뒤에 있는 학생이 2라면 1을 가져오고 없으면 바로 앞에 있는 학생이 2라면 1을 가져오는 방식으로 구현하였습니다.
'알고리즘 > Lv1. 프로그래머스' 카테고리의 다른 글
[프로그래머스] 가장 많이 받은 선물 -JAVA (0) | 2024.08.01 |
---|---|
같은숫자는싫어 (0) | 2023.07.17 |
공원 산책 (0) | 2023.07.13 |
개인정보 수집 유효기간 (0) | 2023.07.13 |
2016년 (0) | 2023.07.11 |