머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. 앞선 피자 나눠 먹기 문제들과는 달리 이번에는 잘라내는 조각 수를 입력받아 처리한다. 그 원하는 조각 수는 slice에 담기고, 사람의 수 n이 주어지고, 이 n명의 사람이 최소 한 조각 이상 먹기 위해서 필요한 최소 피자 판 수를 구하는 것이다. Try 1) 모든 테스트를 통과하지 못함 public static int solution(int slice, int n) { int answer = 1; fo..
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. 피자 나눠 먹기(1)에서 바뀐 점은 피자 한 판이 6조각으로 나뉜다는 점과 주문한 피자를 모두 남기지 않고 먹어야한다는 것, 모두 같은 수의 피자를 먹어야한다는 것이다. 최소한 필요한 피자 판 수가 더 증가될 것 같았다. 만약 사람이 10명인 경우로 가정했을 때 // 10명일때는 한 판 = 6명만 먹고 4명 굶음 // 두 판 = 10명 다 먹지만 2명이 더 먹음 // 세 판 = 10명 다 먹지만 2명이 덜 먹음 // 네 판 = 10명..
머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요. 피자를 일곱조각으로 나눈다는 것은 고정 조건이다. 이제 나눠먹을 사람의 수가 주어지는데, 모든 사람이 한 조각 이상씩 먹기 위해서는 최소 한 판(7조각)이상이어야하며, 만약 1명이 주어진다면 최소 한 조각을 먹기위해서 한 판(1조각) (+6조각 남음)이 필요하다. 사람의 수에서 7조각 수(한 판)를 나누면 최소 먹을 수 있는 판 수가 나온다. 사람의 수는 n % 7로 남은 조각 수를 갱신해준다. 이 n의 나머지가 0이면 사람의 수에 딱 맞게 피자 판 수가 나누어 떨어진다는 것이다. 만약 ..
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요. 배열의 원소를 for반복문을 통해 모두 더하고 그 배열의 길이로 나눠 평균값을 구하면 되는 간단한 문제였다. 이 문제를 풀때 입력받는 방식에서 차별점을 두고 싶었다. 프로그래머스의 자체 입력방식이 아닌, BufferedReader 와 StringTokenizer를 사용해보았다. hasMoreTokens로 사용자로부터 입력된 원소들을 마무리 짓는다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer..
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요. 간단한 문제로 보였지만, 형변환을 하는 문법적인 형식이 다소 헷갈렸다. float(num1 / num2)로 한다거나 int(float(num1 / num2)) 로 한다거나, Float, Int 등으로 바꿔써본다거나 모두 문법적으로 어긋나는 요소였다. ( ) 괄호 안 넣는 것을 인지하지 못한채 생긴 불상사였다. 추가로 주어진 int answer = 부분을 double answer = 처럼 임의로 변경해 입력시키다가 return 부분에서 (int)answer 로 반환해주어도 된다는 사실을 깨달을 수 있었다. 주어진 코드 안에서만 해결하려..
머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다. (종이를 겹쳐서 자를 수 없다.) 그림도 주어져있어 어려운 문제이지 않을까 생각했는데, 직접 규칙을 찾아내어 풀어보니 잘 해결할 수 있었다. 이 문제의 포인트는 가로 M 과 세로 N의 적절한 식을 만들면 되는 문제이다. (M - 1) + (M * (N - 1)) 식이면 원하는 결과를 낼 수 있었다. 가로의 길이보다 한 칸 작게 잘라내게 되고, 세로의 길이보다 한 칸 작게 잘라내게 되지만, 가로의 길이에서 세로만큼 또 반복해주어야하기 때문에 M * (N - 1)이 도출되었다. import java.io.BufferedReader; import java.i..
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요. 앞서 풀었던 '잘라서 배열로 저장하기' 문제와 유사해보였다. 이 문제는 정수 배열이 주어지고, 매개변수가 2개 주어질때 첫번째 매개변수부터 두번째 매개변수 인덱스 까지 자른 정수배열을 다시 리턴해야한다. 정수를 다루다보니 문자열을 처리하는 문제보다는 다소 어려울 것 같아서 정수형 리스트를 선언하여 정수형 배열을 넣어주었다. 넣어주는 과정에서 조건 인덱스를 한번에 처리하도록 하였다. int k = 0; for(int i = 0; i < numbers.length; i++){ if(i = num..
문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요. 필요한 기능을 먼저 생각해보았다. 1) 문자열의 길이를 알아내는 length() 메서드 2) 문자열을 잘라내는 split() 메서드 3) 조각낸 문자열을 담아내는 문자열 리스트, 4) 나머지를 분석할 변수 Try 1) 인덱스 범위 오류 public static String[] solution(String my_str, int n) { String[] split_arr = my_str.split(""); int length = split_arr.length; int answer_len = length / n + 1; String[] answer = new ..
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. 연속된 수를 더하면 되지만, '연속된 수의 개수'와 '연속된 수의 총합'만 주어지기때문에 조금 어렵게 느껴졌다. 총합과 개수만 보고 임의의 수가 어떻게 이뤄질지 유추하는 문제이다. Try 1) java.lang.ArrayIndexOutOfBoundsException: 3 오류 발생 public static int[] solution(int num, int total) { int[] answer = new int[num]; // total과 비교하기 위한 합계..