[코딩테스트] 구명보트

시나브로·2021년 7월 23일
0

코딩테스트

목록 보기
26/34
post-thumbnail

문제


구명보트 문제 바로가기




제출 코드(JAVA)


첫번째 코드 제출

    public int solution(int[] people, int limit) {
        Arrays.sort(people);
        int leftIdx = 0;
        int rightIdx = people.length-1;
        int count = 0;

        while (leftIdx <= rightIdx) {
            int small = people[leftIdx];

            while (((limit - small) < people[rightIdx]) && leftIdx < rightIdx-- )  {
                count++;
            }


            leftIdx++;
            rightIdx--;
            count++;
        }

        return count;
    }

인덱스 활용으로 카운트 증가가 핵심
최저와 최대를 더했을 때, 무게 제한을 초과하면 카운트 증가가 핵심


정확성 테스트

정확성  테스트
테스트 1 〉	통과 (1.86ms, 52.2MB)
테스트 2 〉	통과 (1.26ms, 53MB)
테스트 3 〉	통과 (1.82ms, 54.5MB)
테스트 4 〉	통과 (1.57ms, 52.7MB)
테스트 5 〉	통과 (1.16ms, 53.5MB)
테스트 6 〉	통과 (0.84ms, 53.2MB)
테스트 7 〉	통과 (0.97ms, 53.2MB)
테스트 8 〉	통과 (0.49ms, 52.1MB)
테스트 9 〉	통과 (0.69ms, 52.5MB)
테스트 10 〉	통과 (1.62ms, 53.1MB)
테스트 11 〉	통과 (1.23ms, 52.9MB)
테스트 12 〉	통과 (1.50ms, 52.1MB)
테스트 13 〉	통과 (1.49ms, 53.9MB)
테스트 14 〉	통과 (0.85ms, 52.9MB)
테스트 15 〉	통과 (0.59ms, 52.8MB)
효율성  테스트
테스트 1 〉	통과 (10.51ms, 56.3MB)
테스트 2 〉	통과 (10.99ms, 56.1MB)
테스트 3 〉	통과 (9.72ms, 53.6MB)
테스트 4 〉	통과 (6.92ms, 53.8MB)
테스트 5 〉	통과 (8.09ms, 54.3MB)



두번째 코드 제출

public String solution(String number, int k) {
        Arrays.sort(people);
        int i = 0, j = people.length - 1;
        for (; i < j; --j) {
            if (people[i] + people[j] <= limit)
                ++i;
        }
        return people.length - i;
    }

언제나 나은 답변은 존재,,,, 최소한의 인덱스 활용법


정확성 테스트

정확성  테스트
테스트 1 〉	통과 (1.60ms, 52.1MB)
테스트 2 〉	통과 (1.04ms, 53.4MB)
테스트 3 〉	통과 (1.80ms, 53.2MB)
테스트 4 〉	통과 (1.83ms, 54.4MB)
테스트 5 〉	통과 (1.43ms, 53.6MB)
테스트 6 〉	통과 (0.92ms, 53.1MB)
테스트 7 〉	통과 (1.00ms, 53MB)
테스트 8 〉	통과 (0.47ms, 52.9MB)
테스트 9 〉	통과 (0.48ms, 52.2MB)
테스트 10 〉	통과 (1.61ms, 53.4MB)
테스트 11 〉	통과 (1.82ms, 52.7MB)
테스트 12 〉	통과 (1.40ms, 53.1MB)
테스트 13 〉	통과 (1.57ms, 54MB)
테스트 14 〉	통과 (1.38ms, 52MB)
테스트 15 〉	통과 (0.52ms, 52.9MB)
효율성  테스트
테스트 1 〉	통과 (9.56ms, 56.4MB)
테스트 2 〉	통과 (9.77ms, 53.8MB)
테스트 3 〉	통과 (11.20ms, 53.7MB)
테스트 4 〉	통과 (7.25ms, 53.9MB)
테스트 5 〉	통과 (8.67ms, 54.6MB)



제출 코드(Python)


코드 제출

def solution(people, limit):
    answer = 0

    people.sort()
    i = 0
    j = len(people)-1

    while i <= j:
        if (people[i] + people[j]) <= limit:
            i += 1
            j -= 1
        else:
            j -= 1
        answer += 1

    return answer

정확성 테스트

정확성  테스트
테스트 1 〉	통과 (1.25ms, 10.3MB)
테스트 2 〉	통과 (1.16ms, 10.2MB)
테스트 3 〉	통과 (0.94ms, 10.3MB)
테스트 4 〉	통과 (0.83ms, 10.3MB)
테스트 5 〉	통과 (0.53ms, 10.2MB)
테스트 6 〉	통과 (0.27ms, 10.1MB)
테스트 7 〉	통과 (0.46ms, 10.2MB)
테스트 8 〉	통과 (0.04ms, 10.2MB)
테스트 9 〉	통과 (0.07ms, 10.2MB)
테스트 10 〉	통과 (0.89ms, 10.3MB)
테스트 11 〉	통과 (0.85ms, 10.2MB)
테스트 12 〉	통과 (0.72ms, 10.2MB)
테스트 13 〉	통과 (0.96ms, 10.3MB)
테스트 14 〉	통과 (1.12ms, 10MB)
테스트 15 〉	통과 (0.10ms, 10.2MB)
효율성  테스트
테스트 1 〉	통과 (8.90ms, 10.7MB)
테스트 2 〉	통과 (9.76ms, 10.5MB)
테스트 3 〉	통과 (8.65ms, 10.6MB)
테스트 4 〉	통과 (9.51ms, 10.6MB)
테스트 5 〉	통과 (8.57ms, 10.6MB)




profile
Be More!

0개의 댓글