알고리즘/Lv1. 프로그래머스

체육복

signal시노 2023. 7. 17. 21:06

출처 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