알고리즘

Algorithms/프로그래머스

[프로그래머스] '분수의 덧셈' - Java

첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. Try 1) - 주어진 테스트케이스 2개는 통과했으나 제출 시 나머지 테스트는 통과하지 못하였다. - 너무 표면적인 문제만 해결하려 했던 것 같다. >> 테스트케이스에 맞춰 코드를 설계하려 했음 int[] answer = {0, 0}; int temp; // 공통 분모 int marking; // Case 1. 첫번째 분수의 분모가 두번째 분수의 분모보다 클때 if(num1 > num2){ if(num1 % num2 !=..

Algorithms/프로그래머스

[프로그래머스] '문자열 뒤집기' - Java

문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요. 문자열 뒤집기는 첫번째 인덱스의 문자와 끝 인덱스의 문자를 바꾸고 인덱스를 바꾼 후 또 그 인덱스에서의 바꾸기가 이루어지면 되는 것이다. lt 라는 변수와 rt라는 변수를 두어 해결하려했지만, 첫번째인덱스는 반복문에서 'i'라는 변수로 쉽게 접근이 가능하기에 rt변수만 두었다. int rt = my_string.length() - 1; rt는 주어진 my_string의 끝문자를 표시한다. .length() - 1 처음에는 Try 1) StringIndexOutOfBoundsException 오류가 발생하였다. 문자열의 인덱스를 참조하는 과정에서 범위 지정이 ..

Algorithms/프로그래머스

[프로그래머스] '직각삼각형 출력하기' - Java

"*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요. 간단히 이중 반복문을 통해서 별을 출력하는 문제인 것 같았다. 첫째줄로부터 줄이 증가할수록 별의 개수도 증가하면 되는 것이다. i와 j로 이중 반복문을 잡고 j는 i까지 반복해주면 될것 같았다. print()문으로 별을 공백없이 옆에 붙여서 반복 출력해주면 된다. for(int i = 1; i

Algorithms/프로그래머스

[프로그래머스] '피자 나눠 먹기 (3)' - Java

머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. 앞선 피자 나눠 먹기 문제들과는 달리 이번에는 잘라내는 조각 수를 입력받아 처리한다. 그 원하는 조각 수는 slice에 담기고, 사람의 수 n이 주어지고, 이 n명의 사람이 최소 한 조각 이상 먹기 위해서 필요한 최소 피자 판 수를 구하는 것이다. Try 1) 모든 테스트를 통과하지 못함 public static int solution(int slice, int n) { int answer = 1; fo..

Algorithms/프로그래머스

[프로그래머스] '피자 나눠 먹기 (2)' - Java

머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. 피자 나눠 먹기(1)에서 바뀐 점은 피자 한 판이 6조각으로 나뉜다는 점과 주문한 피자를 모두 남기지 않고 먹어야한다는 것, 모두 같은 수의 피자를 먹어야한다는 것이다. 최소한 필요한 피자 판 수가 더 증가될 것 같았다. 만약 사람이 10명인 경우로 가정했을 때 // 10명일때는 한 판 = 6명만 먹고 4명 굶음 // 두 판 = 10명 다 먹지만 2명이 더 먹음 // 세 판 = 10명 다 먹지만 2명이 덜 먹음 // 네 판 = 10명..

Algorithms/프로그래머스

[프로그래머스] '피자 나눠 먹기 (1)' - Java

머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요. 피자를 일곱조각으로 나눈다는 것은 고정 조건이다. 이제 나눠먹을 사람의 수가 주어지는데, 모든 사람이 한 조각 이상씩 먹기 위해서는 최소 한 판(7조각)이상이어야하며, 만약 1명이 주어진다면 최소 한 조각을 먹기위해서 한 판(1조각) (+6조각 남음)이 필요하다. 사람의 수에서 7조각 수(한 판)를 나누면 최소 먹을 수 있는 판 수가 나온다. 사람의 수는 n % 7로 남은 조각 수를 갱신해준다. 이 n의 나머지가 0이면 사람의 수에 딱 맞게 피자 판 수가 나누어 떨어진다는 것이다. 만약 ..

Algorithms/프로그래머스

[프로그래머스] '배열의 평균값' - Java

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요. 배열의 원소를 for반복문을 통해 모두 더하고 그 배열의 길이로 나눠 평균값을 구하면 되는 간단한 문제였다. 이 문제를 풀때 입력받는 방식에서 차별점을 두고 싶었다. 프로그래머스의 자체 입력방식이 아닌, BufferedReader 와 StringTokenizer를 사용해보았다. hasMoreTokens로 사용자로부터 입력된 원소들을 마무리 짓는다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer..

Algorithms/프로그래머스

[프로그래머스] '두 수의 나눗셈' - Java

정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요. 간단한 문제로 보였지만, 형변환을 하는 문법적인 형식이 다소 헷갈렸다. float(num1 / num2)로 한다거나 int(float(num1 / num2)) 로 한다거나, Float, Int 등으로 바꿔써본다거나 모두 문법적으로 어긋나는 요소였다. ( ) 괄호 안 넣는 것을 인지하지 못한채 생긴 불상사였다. 추가로 주어진 int answer = 부분을 double answer = 처럼 임의로 변경해 입력시키다가 return 부분에서 (int)answer 로 반환해주어도 된다는 사실을 깨달을 수 있었다. 주어진 코드 안에서만 해결하려..

Algorithms/프로그래머스

[프로그래머스] '종이 자르기' - Java

머쓱이는 큰 종이를 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..

LEFT
'알고리즘' 태그의 글 목록 (9 Page)