[프로그래머스 알고리즘 고득점 Kit][그리디][Java] 체육복

2026. 4. 30. 17:41·알고리즘 & 자료구조/문제 풀이

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

지금 나는 2벌을 가지고 있고
내 왼쪽이나 오른쪽에 한벌도 없다면 빌려준다.
모든 사람에 대해서 체육복을 왼쪽 기준을 먼저 다 체크해준다.

모든 사람을 왼쪽부터 왼쪽 친구 먼저 기준으로 둔 이유는 
 0 2 0 2 이렇게 있다면 0 1 1 2 이런 상황이 일어날 수 있기때문에 
왼쪽 사람부터 왼쪽 친구에게 먼저인 방향을 정하고 진행했다.

반대로 오른쪽 사람부터 오른쪽 친구에게 먼저인 방향으로 풀어도 된다.

양 끝점 배열의 인덱스를 넘어가지 않게 하기위해 분리했더니 좀 복잡해졌다.
lost 와 reserve를 적용할 때 advanced for 를 쓰면 조금은 더 깔끔해질 것같다.

import java.util.*;

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

 

저작자표시 비영리 변경금지 (새창열림)

'알고리즘 & 자료구조 > 문제 풀이' 카테고리의 다른 글

[프로그래머스 알고리즘 고득점 Kit][정렬][Java] 가장 큰 수  (0) 2026.04.28
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 아이템 줍기  (0) 2026.04.28
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 여행경로  (0) 2026.04.27
[LeetCode][Java][영어공부] 1071. Greatest Common Divisor of Strings  (0) 2026.04.24
[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 기능 개발  (0) 2026.04.24
'알고리즘 & 자료구조/문제 풀이' 카테고리의 다른 글
  • [프로그래머스 알고리즘 고득점 Kit][정렬][Java] 가장 큰 수
  • [프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 아이템 줍기
  • [프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 여행경로
  • [LeetCode][Java][영어공부] 1071. Greatest Common Divisor of Strings
수수다
수수다
우하하
  • 수수다
    그냥살자
    수수다
  • 전체
    오늘
    어제
    • 분류 전체보기 (57) N
      • 프로젝트 (1)
      • 알고리즘 & 자료구조 (29) N
        • 내용 정리 (2)
        • 문제 풀이 (27) N
      • 데이터베이스 (23) N
        • 내용 정리 (1)
        • 문제 풀이 (22) N
      • CS (2)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 블로그
  • 공지사항

  • 인기 글

  • 태그

    HTTP 메서드
    그래프
    bfs
    삼성청년SW·AI아카데미
    이분탐색
    IFNULL
    깊이/너비 우선 탐색(DFS/BFS)
    정렬
    해시
    바킹독
    알고리즘
    동적계획법
    싸피
    평균회귀
    매개변수탐색
    코테
    date_format
    SQL
    코팅테스트
    mysql
    코딩테스트
    프로그래머스 알고리즘 고득점 kit
    유니온파인드
    Java
    바이브코딩
    DP
    like
    프로그래머스
    분리집합
    coalesce
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수수다
[프로그래머스 알고리즘 고득점 Kit][그리디][Java] 체육복
상단으로

티스토리툴바