문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요. 문자열 뒤집기는 첫번째 인덱스의 문자와 끝 인덱스의 문자를 바꾸고 인덱스를 바꾼 후 또 그 인덱스에서의 바꾸기가 이루어지면 되는 것이다. lt 라는 변수와 rt라는 변수를 두어 해결하려했지만, 첫번째인덱스는 반복문에서 'i'라는 변수로 쉽게 접근이 가능하기에 rt변수만 두었다. int rt = my_string.length() - 1; rt는 주어진 my_string의 끝문자를 표시한다. .length() - 1 처음에는 Try 1) StringIndexOutOfBoundsException 오류가 발생하였다. 문자열의 인덱스를 참조하는 과정에서 범위 지정이 ..
"*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요. 간단히 이중 반복문을 통해서 별을 출력하는 문제인 것 같았다. 첫째줄로부터 줄이 증가할수록 별의 개수도 증가하면 되는 것이다. i와 j로 이중 반복문을 잡고 j는 i까지 반복해주면 될것 같았다. print()문으로 별을 공백없이 옆에 붙여서 반복 출력해주면 된다. for(int i = 1; i
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 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..