2023. 3. 11. 19:54ㆍAlgorithm
1. 피자 나눠 먹기 (1)
(문제 설명, 제한사항, 입출력 예)
피자를 나눠먹을 사람의 수가 주어졌을 때, 이 모든 사람이 한 조각 이상 먹기 위해 필요한 피자의 수를 구하라는 문제다.
단, 한 피자는 일곱 조각으로 잘라준다.
(내가 생각한 풀이 과정)
1부터 7까지는 1판, 8부터 14까지는 2판, 15부터 21까지는 3판... 이런 식으로 7의 배수를 기준으로 반환값이 구분된다.
즉, n값을 7로 나누었을 때 그 결괏값을 참고한다면 문제를 해결할 수 있을 것 같았다.
7을 7로 나누면 1이지만, 1부터 6사이의 값을 7로 나누면 0이 나오니 +1을 시켰다.
마찬가지 14를 7로 나누면 2이지만, 8부터 13 사이의 값을 7로 나누면 1이 나오니 +1을 시켰다.
이런 식으로 7의 배수인 값과 그 이전의 값을 구분해서 결괏값을 따로 반환시켰다.
(코드)
💡 내 코드
def solution(n):
if n%7==0: return n/7
else: return n//7+1
💡 다른 사람의 풀이 코드
내가 생각한 방법을 코드 한 줄로 작성할 수도 있었다.
나처럼 조건문으로 구분을 한 게 아니라 n-1을 사용해 값을 기준에 맞춰주는 방법이었다.
def solution(n):
return (n - 1) // 7 + 1
2. 피자 나눠 먹기 (2)
(문제 설명, 제한사항, 입출력 예)
한 판은 여섯 조각으로 나누며,
n명이 주문한 피자는 모두 같은 수의 피자 조각을 먹어야 할 때 최소 몇 판을 시켜야 하는지 구하라는 문제다.
(내가 생각한 풀이 과정)
6과 n의 최소공배수를 찾아, 6으로 다시 나눠주면 해결할 수 있을 것이다.
이때, 최소공배수를 찾는 방법은 6과 n이 같아질 때까지, 계속 배수를 시켜주면 된다.
다시 말해, 6과 n을 비교하여 두 수가 같지 않을 경우에 더 작은 수를 배수 시킨 후 다시 두 수가 같은지 비교하는 방식으로 반복하는 방법이다.
(코드)
💡 내 코드
def solution(n):
m = 6
let_n, let_m = n, m
while n != m:
if n > m: m+=let_m
else: n+=let_n
return n/6
💡 다른 사람의 풀이 코드
최소공배수를 구하는 다른 방법을 제시해준다.
두 수를 곱한 후, 두 수의 최대 공약수로 나누어주면 최소공배수를 구할 수 있다고 한다.
최대 공약수는 math 라이브러리의 gcd 메서드를 이용할 수 있다.
import math
def solution(n):
return (n * 6) // math.gcd(n, 6) // 6
3. 피자 나눠 먹기 (3)
(문제 설명, 제한사항, 입출력 예)
피자 조각 수와 피자를 먹는 사람의 수가 주어진다고 할 때, n명의 사람이 최소 한 조각 이상 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 구하라는 문제이다.
피자가게에서는 피자를 원하는 조각 수 (2~10 조각 사이)로 잘라준다고 한다.
(내가 생각한 풀이 과정)
피자 나눠 먹기 (1) 문제의 아이디어를 참고하면 쉽게 해결할 수 있는 문제이다.
사람 인원수를 조각수로 나누고 더하기 1을 하면 필요한 피자 판수가 나온다. 단, 피자 나눠 먹기 (1) 문제처럼 인원수와 피자 조각수가 같을 경우가 문제가 되는데, 이때는 -1과 +1을 이용하여 값에 차이를 두는 방식으로 해결할 수 있었다.
(코드)
💡 내 코드
def solution(slice, n):
return (n-1)//slice+1
4. 배열의 평균값
(문제 설명, 제한사항, 입출력 예)
정수 배열이 주어질 때 이 배열 원소의 평균값을 구하라는 문제이다.
(내가 생각한 풀이 과정)
파이썬 내장함수 sum(합산)과 len(문자열 길이 구하기)을 이용하면 해결할 수 있다.
(코드)
💡 내 코드
def solution(numbers):
return sum(numbers)/len(numbers)
'Algorithm' 카테고리의 다른 글
[Programmers/Lv. 0] 코딩테스트 입문 Day 6 - 문자열, 반복문, 출력, 배열, 조건문 (Python) (1) | 2023.03.13 |
---|---|
[Programmers/Lv. 0] 코딩테스트 입문 Day 5 - 수학, 배열 (Python) (0) | 2023.03.13 |
[Programmers/Lv. 0] 코딩테스트 입문 Day 3 - 사칙연산, 배열, 수학 (Python) (0) | 2023.02.16 |
[Programmers/Lv. 0] 코딩테스트 입문 Day 2 - 사칙연산, 조건문, 배열 (Python) (0) | 2023.02.15 |
[Programmers/Lv. 0] 코딩테스트 입문 Day 1 - 사칙연산 (Python) (0) | 2023.02.11 |