[프로그래머스, 파이썬, JAVA] 체육복 - 레벨 1 | 그리디, 파이썬 vs 자바

PoemSilver·2023년 2월 11일
0

Algorithm

목록 보기
25/30

📌 프로그래머스 Level 1 : 체육복


간단한 그리디 문제.

같은 알고리즘을 사용해서 파이썬, 자바 각각 풀어봤다.


📝 내 답안(with 파이썬)

def solution(n, lost, reserve):

    # 여분도 없는데 잃어버림
    lost_p = set(lost) - set(reserve)
    # 여분 있는데 안잃어버림
    rese_p = set(reserve) - set(lost)
    
    for i in rese_p:
        if i-1 in lost_p:
            lost_p.remove(i-1)
        elif i+1 in lost_p:
            lost_p.remove(i+1)
            
    return n-len(lost_p)


📝 내 답안(with 자바)

import java.util.Set;
import java.util.HashSet;

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        Set<Integer> lost_p = new HashSet<>();
        Set<Integer> rese_p = new HashSet<>();
        
        for (int i : lost) {
            lost_p.add(i);
        }
        
        for (int i : reserve) {
            if (lost_p.contains(i)) {
                lost_p.remove(i);
            } else {
                rese_p.add(i);
            }
        }
        
        for (int i : rese_p) {
            if (lost_p.contains(i - 1)) {
                lost_p.remove(i - 1);
            } else if (lost_p.contains(i + 1)) {
                lost_p.remove(i + 1);
            }
        }
        
        return n - lost_p.size();
    }
}


🔮 풀이

  1. set 할당
    lost_p : 여분도 없는데 잃어버린 학생 리스트 (=빌려야 하는 학생들)
    rese_p : 여분도 있는데 잃어버리지 않은 학생 (=다른 학생에게 여분의 체육복을 빌려줄 수 있음)

  2. 최종적으로 빌릴 수 없는 학생들을 구하기
    rese_p 앞 뒤로 lost_p 에 해당하는 학생이 있으면 lost_p 에서 해당 학생 삭제.

#파이썬에서는..
    for i in rese_p:
        if i-1 in lost_p:
            lost_p.remove(i-1)
        elif i+1 in lost_p:
            lost_p.remove(i+1)
//자바에서는..
        for (int i : rese_p) {
            if (lost_p.contains(i - 1)) {
                lost_p.remove(i - 1);
            } else if (lost_p.contains(i + 1)) {
                lost_p.remove(i + 1);
            }
        }

이 때 if else문을 통해 조건문 없이도 rese_p 학생이 자신의 앞 번호의 학생을 우선적으로 빌려줄 수 있음.


간단한 문제였지만.. 파이썬으로 푸니까 훨씬! 간단했다.

확실히 파이썬이 시간 제한이 있는 코딩테스트에서는 유리하겠다는 생각을 또 한 번 하게 해준 문제

0개의 댓글

관련 채용 정보