정수 배열 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; //..
주사위를 BufferedReader로 입력받고 공백을 기준으로 정수형 변수들을 만들어 준 후 연산 하고자 하였다. 주사위 눈이 모두 같은 경우, 한개만 같은 경우, 모두 다른 경우를 and 와 or 연산을 통해 구현하면 된다. if(a == b && b == c && a == c) { result = 10000 + a * 1000; System.out.println(result); } a와 b가 같고 b와 c가 같고 a와 c가 같은 경우를 and연산으로 처리해주었고, result 변수에 상금을 담았다. else if (a == b || b == c || a == c) { if(a == b) { result = 1000 + a * 100; } else if(b == c) { result = 1000 + b..
백준 2884번 : 알람 시계와 비슷하게 '시간'을 다루는 문제이다. 알람 시계에서는 45분을 일찍 일어나야해서 -45를 해주는 것이 있었다면 이번 오븐 시계에서는 조리 후의 시간을 알려주는 시계를 만드는 것이므로 + m (분) 을 해주어야한다. int total = m + ing; if(m = 24) { h = h - 24; } else if(m >= 60) { m = 60 - m; } m = 60 - (total); m = Math.abs(m); if(m == 60) { m = 0; } System.out.println(h + " " + m); } else { if(h >= 24) { h = h -..