Covenant



2018 섬머 윈터코딩은 프로그래머스에서 진행한 스타트업 인턴 프로그램 코딩테스트입니다.
이렇게 쉽게 나올날이 또 올까 싶습니다..


2018 섬머 윈터코딩 풀이 모음




📖 점프와 순간이동 문제 확인




✏️ 문제 해결방법


  • 3개의 수를 더했을 때 소수인지를 판별하는 문제입니다.
  • [1, 2, 3, 4]의 배열에서 (1, 2, 3)을 선택한 경우의 수와 (3, 2, 1)을 선택한 경우의 수는 같은 경우의 수 입니다.
  • 왜냐하면 수의 합이 소수인지만 판결할 것이기 때문입니다.
  • (0, 1, 2, 3) ~ (3, 4, 5, 6)에서 중복을 허용하지 않는 조합의 경우의 수를 출력은 for문을 이용하면 다음과 같이 할 수 있습니다.
for i in range(0, N):
    for j in range(i+1, N):
        for k in range(j+1, N):
            for l in range(k+1, N):
                print(i, j, k, l)
  • 본 문제는 itertools의 combinations으로도 풀 수 있지만 3중 for를 이용해서 해결하였습니다.


⭕ 최종 풀이

def isPrime(num):
    if num == 1:
        return False
    elif num == 2:
        return True
    else:
        for i in range(2, num):
            if num % i == 0:
                return False
    return True

def solution(nums):
    answer = 0
    N = len(nums)

    for i in range(0, N):
        for j in range(i + 1, N):
            for k in range(j + 1, N):
                total_num = nums[i] + nums[j] + nums[k]
                if isPrime(total_num):
                    answer += 1

    return answer