1️⃣ 나머지 구하기
문제 설명
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
제한사항
- 1 < n ≤ 100
입출력 예
n | result |
7 | 1 |
1 | 1 |
15 | 3 |
- 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.
- 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.
- 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.
💻 나의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
answer = (n%7==0) ? n/7 : (n/7)+1;
return answer;
}
}
한 판에 7조각이니까..n이 7보다 작거나 같다면 1판이고, 7보다 크고 14보다 작거나 같다면 2판이네? > 7로 나눴을 때 나머지가 0이면 참, 나머지가 0이 아니면 거짓으로 한판이 더 필요하네
이런 식으로 생각하여 삼항 연산자를 사용했습니다.
🔎 다른 사람의 풀이
class Solution {
public int solution(int n) {
return (n + 6) / 7;
}
}
2️⃣ 피자 나눠 먹기 (2)
문제 설명
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 < n ≤ 100
입출력 예
n | result |
6 | 1 |
10 | 5 |
4 | 2 |
💻 나의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
int gcd = 0;
for (int i=1; i<=n; i++){
if(6%i==0 && n%i==0){
gcd=i;
}
}
answer = n/gcd;
return answer;
}
}
피자 한 판이 6조각
사람 수 n
한 사람이 먹는 피자 조각 i
6과 n의 최대공약수를 먼저 구합니다.
그 다음, 사람 수 n을 최대공약수인 GCD로 나누어주면 피자가 몇 판이어야 하는지 알 수 있습니다.
⭐ 유클리드 호제법 (최대공약수 구하기)
두 수 a, b의 최대공약수(GCD)는 bdhk a%b의 최대공약수(GCD)와 같다.
public static int gcd(int a, int b) { while (b != 0) { int r = a % b; a = b; b = r; } return a; }
⭐ 최소 공배수 (LCM) 구하기
두 수의 최대 공약수를 먼저 구한 후, 두 수의 곱셈을 최대 공약수로 나누어준다.
public int lcm(int a, int b) { int gcd = gcd(a, b); return (a * b) / gcd; }
🔎 다른 사람의 풀이
class Solution {
public int GCD(int num1, int num2) {
if (num1 % num2 == 0)
return num2;
return GCD(num2, num1 % num2);
}
public int LCM(int num1, int num2) {
return num1 * num2 / GCD(num1, num2);
}
public int solution(int n) {
return LCM(n, 6) / 6;
}
}
class Solution {
public int solution(int n) {
int answer = 1;
while(true){
if(6*answer%n==0) break;
answer++;
}
return answer;
}
}
3️⃣ 피자 나눠 먹기 (3)
문제 설명
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 ≤ slice ≤ 10
- 1 ≤ n ≤ 100
입출력 예
slice | n | result |
7 | 10 | 2 |
4 | 12 | 3 |
💻 나의 풀이
class Solution {
public int solution(int slice, int n) {
int answer = 0;
if(n%slice != 0){
answer = n/slice +1;
} else {
answer = n/slice;
}
return answer;
}
}
n을 slice로 나누었을 때 나머지가 0이 아니면 => 피자는 +1 해야합니다.
class Solution {
public in solution(int slice, int n){
int answer = 0;
if(2<=slice && slice<=10){
answer=(n%slice==0) ? (n/slice) : (n/slice)+1;
}
return answer;
}
}
삼항연산자로 바꾸어 본 코드 입니다.
🔎 다른 사람의 풀이
class Solution {
public int solution(int slice, int n) {
return n % slice > 0 ? n/slice+1 : n/slice;
}
}
4️⃣ 배열의 평균값
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ numbers의 원소 ≤ 1,000
- 1 ≤ numbers의 길이 ≤ 100
- 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
입출력 예
numbers | result |
[1,2,3,4,5,6,7,8,9,10] | 5.5 |
[89,90,91,92,93,94,95,96,97,98,99] | 94.0 |
💻 나의 풀이
class Solution {
public double solution(int[] numbers) {
double answer = 0;
for(int i=0; i<numbers.length; i++){ // 배열의 길이만큼 반복
answer += numbers[i]; // 배열의 i번째 값을 차례차례 더한다.
}
return answer/numbers.length; // 합쳐진 값을 배열의 길이로 나눈다.
}
}
배열의 모든 원소의 합을 구해서 배열의 길이로 나눠주면 배열 원소들의 평균이 나온다.
🔎 다른 사람의 풀이
import java.util.Arrays;
class Solution {
public double solution(int[] numbers) {
return Arrays.stream(numbers).average().orElse(0);
}
}
'프로그래머스 > 0단계' 카테고리의 다른 글
DAY6 문자열, 반복문, 출력, 배열, 조건문 (1) | 2023.11.23 |
---|---|
DAY5 수학, 배열 (1) | 2023.11.23 |
DAY3 사칙연산, 배열, 수학 (0) | 2023.11.22 |
DAY2 사칙연산, 조건문, 배열 (1) | 2023.11.21 |
DAY1 사칙연산 / 옹알이 (1) | 2023.11.20 |
1️⃣ 나머지 구하기
문제 설명
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
제한사항
- 1 < n ≤ 100
입출력 예
n | result |
7 | 1 |
1 | 1 |
15 | 3 |
- 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.
- 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.
- 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.
💻 나의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
answer = (n%7==0) ? n/7 : (n/7)+1;
return answer;
}
}
한 판에 7조각이니까..n이 7보다 작거나 같다면 1판이고, 7보다 크고 14보다 작거나 같다면 2판이네? > 7로 나눴을 때 나머지가 0이면 참, 나머지가 0이 아니면 거짓으로 한판이 더 필요하네
이런 식으로 생각하여 삼항 연산자를 사용했습니다.
🔎 다른 사람의 풀이
class Solution {
public int solution(int n) {
return (n + 6) / 7;
}
}
2️⃣ 피자 나눠 먹기 (2)
문제 설명
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 < n ≤ 100
입출력 예
n | result |
6 | 1 |
10 | 5 |
4 | 2 |
💻 나의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
int gcd = 0;
for (int i=1; i<=n; i++){
if(6%i==0 && n%i==0){
gcd=i;
}
}
answer = n/gcd;
return answer;
}
}
피자 한 판이 6조각
사람 수 n
한 사람이 먹는 피자 조각 i
6과 n의 최대공약수를 먼저 구합니다.
그 다음, 사람 수 n을 최대공약수인 GCD로 나누어주면 피자가 몇 판이어야 하는지 알 수 있습니다.
⭐ 유클리드 호제법 (최대공약수 구하기)
두 수 a, b의 최대공약수(GCD)는 bdhk a%b의 최대공약수(GCD)와 같다.
public static int gcd(int a, int b) { while (b != 0) { int r = a % b; a = b; b = r; } return a; }
⭐ 최소 공배수 (LCM) 구하기
두 수의 최대 공약수를 먼저 구한 후, 두 수의 곱셈을 최대 공약수로 나누어준다.
public int lcm(int a, int b) { int gcd = gcd(a, b); return (a * b) / gcd; }
🔎 다른 사람의 풀이
class Solution {
public int GCD(int num1, int num2) {
if (num1 % num2 == 0)
return num2;
return GCD(num2, num1 % num2);
}
public int LCM(int num1, int num2) {
return num1 * num2 / GCD(num1, num2);
}
public int solution(int n) {
return LCM(n, 6) / 6;
}
}
class Solution {
public int solution(int n) {
int answer = 1;
while(true){
if(6*answer%n==0) break;
answer++;
}
return answer;
}
}
3️⃣ 피자 나눠 먹기 (3)
문제 설명
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 ≤ slice ≤ 10
- 1 ≤ n ≤ 100
입출력 예
slice | n | result |
7 | 10 | 2 |
4 | 12 | 3 |
💻 나의 풀이
class Solution {
public int solution(int slice, int n) {
int answer = 0;
if(n%slice != 0){
answer = n/slice +1;
} else {
answer = n/slice;
}
return answer;
}
}
n을 slice로 나누었을 때 나머지가 0이 아니면 => 피자는 +1 해야합니다.
class Solution {
public in solution(int slice, int n){
int answer = 0;
if(2<=slice && slice<=10){
answer=(n%slice==0) ? (n/slice) : (n/slice)+1;
}
return answer;
}
}
삼항연산자로 바꾸어 본 코드 입니다.
🔎 다른 사람의 풀이
class Solution {
public int solution(int slice, int n) {
return n % slice > 0 ? n/slice+1 : n/slice;
}
}
4️⃣ 배열의 평균값
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ numbers의 원소 ≤ 1,000
- 1 ≤ numbers의 길이 ≤ 100
- 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
입출력 예
numbers | result |
[1,2,3,4,5,6,7,8,9,10] | 5.5 |
[89,90,91,92,93,94,95,96,97,98,99] | 94.0 |
💻 나의 풀이
class Solution {
public double solution(int[] numbers) {
double answer = 0;
for(int i=0; i<numbers.length; i++){ // 배열의 길이만큼 반복
answer += numbers[i]; // 배열의 i번째 값을 차례차례 더한다.
}
return answer/numbers.length; // 합쳐진 값을 배열의 길이로 나눈다.
}
}
배열의 모든 원소의 합을 구해서 배열의 길이로 나눠주면 배열 원소들의 평균이 나온다.
🔎 다른 사람의 풀이
import java.util.Arrays;
class Solution {
public double solution(int[] numbers) {
return Arrays.stream(numbers).average().orElse(0);
}
}
'프로그래머스 > 0단계' 카테고리의 다른 글
DAY6 문자열, 반복문, 출력, 배열, 조건문 (1) | 2023.11.23 |
---|---|
DAY5 수학, 배열 (1) | 2023.11.23 |
DAY3 사칙연산, 배열, 수학 (0) | 2023.11.22 |
DAY2 사칙연산, 조건문, 배열 (1) | 2023.11.21 |
DAY1 사칙연산 / 옹알이 (1) | 2023.11.20 |