본문 바로가기

Develop/Coding Test

코딩 테스트 입문 (feat. Day 4 수학, 배열)

4일차 스탬프

1. 피자 나눠 먹기(1)  

Q. 머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

func solution(_ n:Int) -> Int {
    return n % 7 == 0 ? n / 7 : n / 7 + 1
}

 

A. 사람 수를 7로 나눴을 때 나머지가 0인지 아닌지를 판단하여

0인 경우, 몫을 결과로 반환하고

0이 아닌 경우, 몫에 1을 더한 값을 반환하여 해결했다.

2. 피자 나눠 먹기(2) 

Q. 머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

func solution(_ n:Int) -> Int {
    var pizza = 1
    while true {
        if 6 * pizza % n == 0 {
            break
        }
        pizza += 1
    }
    return pizza
}

 

A. 피자 한 판당 6조각을 먹을 수 있고 피자의 수 * 조각 수를 인원 수로 나눴을 때 나머지가 0 이면

모든 인원이 같은 수의 피자 조각을 남기지 않고 먹을 수 있다.

따라서, 해당 조건을 만족했을 때의 피자의 수를 반환하여 해결했다.

 

feat.

해결 후 다른 풀이를 보며 보완할 점을 찾았는데

while문의 조건을 true로 걸어서 무한 루프를 거는 것이 아니라

while 6 * pizza % n != 0 {
	pizza += 1
}

위 코드 처럼 if문을 제거하고, while문의 조건을 변경하면

불필요한 코드를 제거할 수 있었을 것 같다.

3. 피자 나눠 먹기(3)

Q. 머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

func solution(_ slice:Int, _ n:Int) -> Int {
    var pizza = 1
    while true {
        if slice * pizza / n > 0 {
            break
        }
        pizza += 1
    }
    return pizza
}

 

A. 전달 받은 조각 수 * 피자의 수를 인원 수로 나누었을 때, 0보다 크다면 모든 인원이 최소 한 조각 이상 피자를 먹을 수 있다.

따라서, 해당 조건을 만족했을 때의 피자의 수를 반환하여 해결했다.

4. 배열의 평균값

Q. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요. (정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.)

func solution(_ numbers:[Int]) -> Double {
    var totalSum: Double = 0

    numbers.forEach {
        totalSum += Double($0)
    }

    return totalSum / Double(numbers.count)
}

 

A. 합계를 구하기 위해 반복문을 통해 numbers를 순회하면서 저장된 원소의 값들을 모두 더했다.

그리고 return type이 Double이기 때문에 합계에 배열의 길이를 Double로 형변환 하여 나눈 후 몫을 반환하여 해결했다.


오늘은 문제의 난이도가 그다지 어렵지 않아서 빠르게 해결할 수 있었다.

내일도 화이팅!