[프로그래머스(Programmers)][Java,Python] (Lv1) 택배 상자 꺼내기 (2025 프로그래머스 코드챌린지 2차 예선)

728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/389478?language=java#

 

프로그래머스

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

programmers.co.kr

 

1. Java

class Solution {
    public int solution(int n, int w, int num) {
        int answer = 0;
        int m = num;
        while ( m <= n ) {
            answer++;
            m += (w - ((m - 1) % w) - 1) * 2 + 1;
        }
        return answer;
    }
}
더보기
class Solution {
    public int solution(int n, int w, int num) {
        int answer = 0;
        int level = (int) (num / w);
        if ( w - (num % w) + 1 <= w ) {
            level++;
        }
        int m = num;
        while ( true ) {
            answer++;
            int next_m = (2 * w * (level++) + 1) - m;
            if ( next_m > n ) {
                break;
            }
            m = next_m;
        }
        return answer;
    }
}

 

class Solution {
    public int solution(int n, int w, int num) {
        int answer = 0;
        int num_mok = (int) (num / w);
        int num_nmg = num % w;
        int num_2_mok = num_mok + 1;
        int num_2_nmg = w - num_nmg + 1;
        if ( num_2_nmg >= w ) {
            num_2_nmg %= w;
            num_2_mok = num_mok;
        }
        while ( n >= w * num_mok + num_nmg ) {
            answer++;
            num_mok += 2;
        }
        while ( n >= w * num_2_mok + num_2_nmg ) {
            answer++;
            num_2_mok += 2;
        }
        return answer;
    }
}

/* 반례: 
3 3 1   1
5 5 3   1
10 1 4  7
10 2 5  3
*/

 

2. Python

def solution(n, w, num):
    answer = 0
    m = num;
    while m <= n :
        answer += 1
        m += (w - ((m - 1) % w) - 1) * 2 + 1
    return answer

 

 

반응형