프로그래머스 코딩테스트 입문 - DAY2
두 수의 나눗셈
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
테스트 케이스
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
double result = (double)num1 / num2;
answer= (int)(result * 1000);
return answer;
}
}
숫자 비교하기
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
테스트 케이스
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
if(num1==num2) {
answer = 1;
}
else{
answer = -1;
}
return answer;
}
}
분수의 덧셈
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
테스트 케이스
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
answer = num1 * num2;
return answer;
}
}
이게 입문 2일차?하고 애먹은 문제.
아무것도 모르고 풀 때는 파이썬으로 아래처럼 풀었다.
for문 범위 설정이...
def solution(denum1, num1, denum2, num2):
answer = []
dnum = num1 * num2
unum = denum1 * num2 + denum2 * num1
box = []
for i in range(2,1000000):
if dnum % i == 0 and unum % i == 0:
box.append(i)
if len(box) == 0:
answer.append(unum)
answer.append(dnum)
else:
m = max(box)
answer.append(unum / m)
answer.append(dnum / m)
return answer
그래서 희망 사용언어인 자바로 다시 시도했다
최대공약수와 최소공배수를 이용한 풀이는 소스코드에 포함했습니다
class Solution {
public int[] solution(int denum1, int num1, int denum2, int num2) {
int max = 0;
//분모의 최대공약수 구하기
for(int i =1;i<=num1&&i<=num2;i++){
if(num1%i==0&&num2%i==0){
max = i;
}
}
//두 수의 곱 = 최대공약수 * 최소공배수를 이용 num1 * num2 = max * 최소공배수
int min = num1 * num2 / max;
//max은 최대공약수 , min은 최소공배수. 즉, min이 분모이다
//최소공배수 / num1 결과를 denum1에 곱하고 2에도 반복
int res1 = min / num1 * denum1;
int res2 = min / num2 * denum2;
int up = res1 + res2;//분자끼리의 합
int checker = 0; // 약분할 숫자
for (int i = 1;i<=min;i++) {
if(up%i==0&&min%i==0) {
checker = i;
}
}
int[] answer = {up/checker, min/checker};
return answer;
}
}
배열 두배 만들기
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
테스트 케이스
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
for(int i=0;i<numbers.length;i++) {
numbers[i] = numbers[i] * 2;
}
answer = numbers;
return answer;
}
}