프로그래머스 체육복

ims·2020년 11월 8일
0
날짜문제유형난이도
2020.11.08그리디1/5

문제

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

아이디어 풀이

여벌 체육복도난 -> IF
n명
1. lost에 있는 숫자가 reserve에도 있다면
lost, reserve 동시에 뺌
2. lost에 있는 숫자에 인접한 reserve 있는지 확인
있다면 lost와 reserve 숫자 둘다 빼줌
n-lost.length = 답

코드

public class PhysicalEducationClothes {
    public static void main(String[] args) {

        int n =3;
        int[] lost = {3};
        int[] reserve = {1};
        int count=0;

    }
}

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {

        int count=0;

        for(int i=0;i<lost.length;i++){
            for(int j=0;j< reserve.length;j++){
                if(lost[i]==reserve[j]){
                    lost[i]=-1;
                    reserve[j]=-1;
                    count++;
                    break;
                }
            }
        }

        for(int i=0;i< lost.length;i++){
            for(int j=0;j<reserve.length;j++){
                if(lost[i]+1==reserve[j] || lost[i]-1==reserve[j]){
                    lost[i]=-1;
                    reserve[j]=-1;
                    count++;
                    break;
                }
            }
        }

        return n-lost.length+count;
    }
}

풀이 참조

https://rimkongs.tistory.com/141

https://programmers.co.kr/learn/courses/30/lessons/42862/solution_groups?language=java

헤맨 부분

  • 체육복 -> 배열을 뺸다 => 그냥 -1을 집어넣어도 된다

  • 여벌의 체육복을 가진 사람이, 2벌, 3벌 추가로 가질 수 있기 때문에 한번 빌려주면 break 를 걸어주어서 멈추어 주어야 한다.

  • 아이디어와 마찬가지로, 2가지 섹션이면 된다. 어렵게 생각할 필요 없음.

  • answer을 구하기 위해 문제를 푸는 것. count를 놓는 생각을 못했었음.

profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글