[코딩테스트] 카펫

시나브로·2021년 6월 24일
0

코딩테스트

목록 보기
16/34
post-thumbnail

문제


완주하지 못한 선수 문제 바로가기



제출 코드(JAVA)


첫번째 코드 제출

import java.util.*;

class Solution {
    public int[] solution(int brown, int yellow) {
        // 약수 구하기
        int[] result = new int[2];
        Set<Integer> divisorSet = getDivisorSet(yellow);

        // 둘레 구하기
        int round = 0;

        for (Integer length : divisorSet) {
            round = getRound(length, yellow);
            if (brown == round) {
                result[0] = length + 2;
                result[1] = yellow/length + 2;
            }
        }

        return result;
    }

    private int getRound(Integer length, int yellow) {
        return 2*(length + (yellow/length)) + 4;
    }

    private Set<Integer> getDivisorSet(int num) {
        Set<Integer> divisorSet = new HashSet<>();
        addDivisorSet(divisorSet, num);
        return divisorSet;
    }

    private void addDivisorSet(Set<Integer> divisorSet, int num) {
        for (int i = 1; i <= num/2+1; i++) {
            if (num%i == 0) {
                divisorSet.add(i);
            }
        }
    }
}

약수를 구한 뒤, 계산 공식에 따라 답변 추출


정확성 테스트

정확성  테스트
테스트 1 〉	통과 (0.06ms, 52.9MB)
테스트 2 〉	통과 (0.05ms, 52.7MB)
테스트 3 〉	통과 (6.43ms, 53.4MB)
테스트 4 〉	통과 (0.12ms, 52.2MB)
테스트 5 〉	통과 (0.22ms, 53.4MB)
테스트 6 〉	통과 (3.11ms, 52.2MB)
테스트 7 〉	통과 (12.10ms, 52.8MB)
테스트 8 〉	통과 (9.72ms, 53MB)
테스트 9 〉	통과 (9.88ms, 52.6MB)
테스트 10 〉	통과 (14.60ms, 54.1MB)
테스트 11 〉	통과 (0.06ms, 52.6MB)
테스트 12 〉	통과 (0.06ms, 52.9MB)
테스트 13 〉	통과 (0.04ms, 52.3MB)






제출 코드(Python)


코드 제출

def getDivisorSet(yellow):
    divisorSet = set()
    for v in range(1, int(yellow/2+2)):
        if yellow % v == 0:
            divisorSet.add((v, int(yellow/v)))
    return divisorSet


def solution(brown, yellow):
    # 약수
    divisorSet = getDivisorSet(yellow)
    # 둘레 구하기
    for a, b in divisorSet:
        if (2*(a+b)+4) == brown:
            result = [a+2, b+2]
            result.sort(reverse=True)
            return result

정확성 테스트

정확성  테스트
테스트 1 〉	통과 (0.01ms, 10.3MB)
테스트 2 〉	통과 (0.01ms, 10.2MB)
테스트 3 〉	통과 (26.62ms, 10.1MB)
테스트 4 〉	통과 (0.12ms, 10.2MB)
테스트 5 〉	통과 (0.42ms, 10.1MB)
테스트 6 〉	통과 (9.20ms, 10.3MB)
테스트 7 〉	통과 (35.10ms, 10.2MB)
테스트 8 〉	통과 (26.79ms, 10.2MB)
테스트 9 〉	통과 (33.42ms, 10.2MB)
테스트 10 〉	통과 (38.86ms, 10.2MB)
테스트 11 〉	통과 (0.01ms, 10.1MB)
테스트 12 〉	통과 (0.01ms, 10.2MB)
테스트 13 〉	통과 (0.01ms, 10.2MB)




profile
Be More!

0개의 댓글