머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 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과 비교하기 위한 합계..
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요. 배열이 주어지고, 그 배열 안 요소가 '7'이라는 문자를 몇개 포함하는지 풀어내는 것이므로, 정수형 배열을 문자열로 변환해준 후 그 문자열에서 equals() 메서드를 활용하여 풀고자 하였다. 정수형 배열에서도 풀어낼 수 있는 방법이 % 나누기 연산자를 이용해 나머지를 분석하면 되지만, 로직을 간단히 하기 위해 정수형배열 -> 문자열배열로 변환 후 해결할 수 있었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //..
👨🏻💻마지막 주차인 4주차에서는 java-bridge라는 주제로 과제를 수행하게되었다. 정신없이 과제를 수행하다보니 벌써 4주차가 되어있었고, 한달 간 새롭게 배운 사실이 많아서 뿌듯했다.💡 기준으로 과제를 수행하였다. 기능 요구 사항 - 위아래 둘 중 하나의 칸만 건널 수 있는 다리를 끝까지 건너가는 게임이다. 입출력 요구 사항 프로그래밍 요구 사항 그 외로 InputView 클래스, OutputView 클래스, BridgeGame 클래스, BridgeMaker 클래스, BridgeRandomNumbergenerator 클래스 또한 기본적인 구조가 주어졌다. 구현과정 전 주차와 같은 제한사항이 주어졌고, 이번에도 클래스의 세분화가 필요할 것 같았다. 다만 이번에는 출력하는 OutputView 부분이 ..