
프로그래머스 코딩테스트 입문 Java로 Day 1 사칙연산, Day 2 사칙연산, 조건문, 배열 풀기

정수 num1과 num2가 주어질 때, num1과 num2의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
num1 ≤ 50,000num2 ≤ 50,000입출력 예
| num1 | num2 | result |
|---|---|---|
| 2 | 3 | 5 |
| 100 | 2 | 102 |
class Solution {
public int solution(int num1, int num2) {
int answer = num1 + num2;
return answer;
}
}
정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.
제한사항
num1 ≤ 50000num2 ≤ 50000입출력 예
| num1 | num2 | result |
|---|---|---|
| 2 | 3 | -1 |
| 100 | 2 | 98 |
class Solution {
public int solution(int num1, int num2) {
int answer = num1 - num2;
return answer;
}
}
정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.
제한사항
num1 ≤ 100num2 ≤ 100입출력 예
| num1 | num2 | result |
|---|---|---|
| 3 | 4 | 12 |
| 27 | 19 | 513 |
class Solution {
public int solution(int num1, int num2) {
int answer = num1 * num2;
return answer;
}
}
정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
제한사항
num1 ≤ 100num2 ≤ 100입출력 예
| num1 | num2 | result |
|---|---|---|
| 10 | 5 | 2 |
| 7 | 2 | 3 |
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
if (num1 > 0 && num1 <= 100 && num2 > 0 && num2 <= 100) {
answer = num1 / num2;
}
return answer;
}
}

정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
제한사항
num1 ≤ 100num2 ≤ 100입출력 예
| num1 | num2 | result |
|---|---|---|
| 3 | 2 | 1500 |
| 7 | 3 | 2333 |
| 1 | 16 | 62 |
class Solution {
public int solution(float num1, float num2) {
float answer = 0;
if (num1 > 0 && num1 <= 100 && num2 > 0 && num2 <= 100) {
answer = (num1/num2) * 1000;
}
return (int)answer;
}
}
다른 사람 코드에서는 보통 double로 형변환을 자주한다. 아무래도 float보다 커서 그런듯?
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
제한사항
num1 ≤ 10,000num2 ≤ 10,000입출력 예
| num1 | num2 | result |
|---|---|---|
| 2 | 3 | -1 |
| 11 | 11 | 1 |
| 7 | 99 | -1 |
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
if (num1 >= 0 && num1 <= 10000 && num2 >= 0 && num2 <= 10000) {
if (num1 == num2) answer = 1;
else answer = -1;
}
return answer;
}
}
다른 사람 코드에서는 (num1 == num2) ? 1 : -1로 사용하거나 아니면 if 문에서 바로 return 하도록 함. 아니면 return 식에 (num1 == num2) ? 1 : -1를 바로 사용함.
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
denum1, num1, denum2, num2 < 1,000입출력 예
| denum1 | num1 | denum2 | num2 | result |
|---|---|---|---|---|
| 1 | 2 | 3 | 4 | [5, 4] |
| 9 | 2 | 1 | 3 | [29, 6] |
class Solution {
public int[] solution(int denum1, int num1, int denum2, int num2) {
int answer[] = new int[2];
int min = 1, num3 = 0, denum3 = 0;
if (denum1 > 0 && denum1 < 1000 && denum2 > 0 && denum2 < 1000 && num1 > 0 && num1 < 1000 && num2 > 0 && num2 < 1000) {
num3 = num1 * num2;
denum3 = denum1 * num2 + denum2 * num1;
for(int i = 1; i <= num3 && i <= denum3; i++) {
if (num3 % i == 0 && denum3 % i == 0) {
min = i;
}
}
answer[0] = denum3/min;
answer[1] = num3/min;
}
return answer;
}
}
포인트 = 분모와 분자의 최대공약수 구하기
어떤 값으로 분모와 분자를 나눴을 때, 0이 나오는 가장 큰 수 ⇒ 최대공약수
기약분수: 분모와 분자가 1 이외에는 공약수가 없는 분수
최대공약수를 구하여 분모와 분자를 약분해주면 됨.
public int GCD(int num1, int num2) {
if (num1 % num2 == 0)
return num2;
return GCD(num2, num1 % num2);
}
이런식으로도 생성 가능함.
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
numbers의 원소 ≤ 10,000numbers의 길이 ≤ 1,000입출력 예
| numbers | result |
|---|---|
| [1, 2, 3, 4, 5] | [2, 4, 6, 8, 10] |
| [1, 2, 100, -99, 1, 2, 3] | [2, 4, 200, -198, 2, 4, 6] |
class Solution {
public int[] solution(int[] numbers) {
int answer[] = new int[numbers.length];
for (int i = 0; i < numbers.length; i++) {
answer[i] = numbers[i] * 2 ;
}
return answer;
}
}
1) 프로그래머스의 경우는 백준과는 달리 return 값을 설정해주면 되는 것 같다. br bw st 이런 걸로 스트레스 받을 일은 없을 듯하다.
2) 다른 사람 코드를 보니 제한사항 조건을 신경쓰는 듯하다. 이 부분도 신경써서 코드 짜야겠다.
3) 기록표
