Day 1 코딩테스트 입문 Lv.0 Java
1. 두 수의 차
정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.
class Solution {
public int solution(int num1, int num2) {
// int answer = 0;
int answer = num1-num2;
return answer;
}
}
2. 두 수의 곱
정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
answer = num1 * num2 ;
return answer;
}
}
3. 두 수의 몫
정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
class Solution {
public int solution(int num1, int num2) {
int answer = num1/num2;
return answer;
}
}
제한사항
0 < num1 ≤ 100
0 < num2 ≤ 100
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
if((0 <= num1 && num1 <= 100) && (0 <= num2 && num2 <= 100)){
answer = num1 / num2;
}
return answer;
}
}
4. 두 수의 합
정수 num1과 num2가 주어질 때, num1과 num2의 합을 return하도록 soltuion 함수를 완성해주세요.
제한사항
-50,000 ≤ num1 ≤ 50,000
-50,000 ≤ num2 ≤ 50,000
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
if((-50000<= num1 && num1 <=50000) && (-50000 <= num2 && num2 <= 50000)) {
answer = num1 + num2;
}
return answer;
}
}
-1 사용법 : 다른사람 문제 풀이로 내가 이해한 방향
문제 풀때 int answer = -1; 로 되있는데 이 값은 false 일때 보통 -1로 반환되기 때문에,
boolean _조건을 걸고, 값이 맞으면true 이면 if(val) 에서 answer에 값 대입 하여 true 값이 나옴, 아니라면 -1 값으로 반환
class Solution {
public int solution(int num1, int num2) {
boolean val = (-50000<= num1 && num1<= 50000 && -50000<=num2 && num2 <= 50000);
int answer = -1;
if(val){
answer = num1 + num2;
}
return answer;
}
}
* 처음에는 제한에 대해 두지 않고 풀었으나 뒤로 가면서 제한사항 확인하면서 풀음.
Day 2 코딩테스트 입문 Lv.0 Java
1. 두 수의 나눗셈
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
제한사항
0 < num1 ≤ 100
0 < num2 ≤ 100
첫시도 실패 : 이유는 변수 형변환 안해줌, int 값을 double로 변환해야함
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
answer = (num1/num2)*1000;
return answer;
}
}
테스트 1
입력값 〉3, 2
기댓값 〉1500
실행 결과 〉실행한 결괏값 1000이 기댓값 1500과 다릅니다.
정답 제출
class Solution {
public int solution(int num1, int num2) {
double answer = (double)num1/num2*1000;
return (int)answer;
}
}
다른 사람의 풀이 * 형변환*
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
double value = (double)num1 / num2 * 1000;
answer = (int)value;
return answer;
}
}
2. 숫자 비교하기
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
제한사항
0 ≤ num1 ≤ 10,000
0 ≤ num2 ≤ 10,000
나의 정답 제출 if else
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
if(num1 == num2) {
answer = 1;
} else {
answer = -1;
}
return answer;
}
}
다른 사람의 제출 삼항연산자
class Solution {
public int solution(int num1, int num2) {
int answer = (num1 == num2) ? 1 : -1;
return answer;
}
}
다른 사람의 제출 제한사항 적용 + 삼항연산자
class Solution {
public int solution(int num1, int num2) {
boolean val = (0<=num1 && num1<=10000 && 0<=num2 && num2 <=10000);
int answer = 0;
if(val){
answer=(num1==num2)? 1: -1;
}
return answer;
}
3. 분수의 덧셈
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
0 <numer1, denom1, numer2, denom2 < 1,000
* 기약분수 : 분모와 분자의 공약수가 1뿐인 분수
일단 냅다 해봤는데 틀렸음
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int[] answer = {};
int[] arr1 = {numer1, denom1};
int[] arr2 = {numer2, denom2};
answer = arr1 + arr2;
return answer;
}
}
정답제출 : 그치만 이해가 잘안되서 다시 공부 필
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int[] answer = new int[2];
answer[0] = denom1 * numer2 + denom2 * numer1;
answer[1] = denom1 * denom2;
int min = (answer[0] > answer[1]) ? answer[0] : answer[1];
int a = 0;
for(int i = 1; i <= min; i++) {
if(answer[0]%i == 0 && answer[1]%i == 0) {
a = i;
}
}
answer[0] = answer[0]/a;
answer[1] = answer[1]/a;
return answer;
}
}
분수의 덧셈 참고 블로그
[프로그래머스] Lv. 0 - 분수의 덧셈
최대공약수 찾기가 어려웠던 문제. 먼저 분자, 분모를 구하고 둘 중 작은 수를 1씩 줄여가면서 for문으로 돌린다. 둘 다 나머지가 0이 나오는 수로 약분하면 되겠다고 생각해서 로직을 짰다. 그런
velog.io
분수의 덧셈 참고 블로그 _ 나는 여기 블로그로 이해했음 (중등1학년 문제랍니다;;)
https://justdoit0730.tistory.com/106
[JAVA, Programmers] 분수의 덧셈(자바)
1. 문제 설명 첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와
justdoit0730.tistory.com
최대공약수와 최소공배수 참고 블로그
https://math100.tistory.com/135
최대공약수와 최소공배수란?
수학에는 최대공약수와 최소공배수라는 것이 있는데, 먼저 최대공약수에 대해서 알아보자. 일단 서로 다른 두 자연수라도 약수를 구해보면 똑같이 공통된 약수가 있다. 예를 들어 자연수 12와 18
math100.tistory.com
중등 수학 학습지제작소
https://calcproject.tistory.com/770
최대공약수와 최소공배수 사이의 관계 (개념+연습문제)
* 같이 보면 좋은 글 📄 자연수의 약수의 개수 구하기 (개념+수학문제) 📄 세 자연수의 최소공배수 (개념+수학문제) * 최대공약수와 최소공배수의 관계 두 자연수의 최대공약수와 최소공배수 사
calcproject.tistory.com
4. 배열 두배 만들기
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
-10,000 ≤ numbers의 원소 ≤ 10,000
1 ≤ numbers의 길이 ≤ 1,000
나의 답안
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;
}
}
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
answer = new int[numbers.length];
for(int i=0; i<answer.length; i++){
answer[i] = numbers[i]*2;
}
return answer;
}
}
다른 사람 Arraylist 이용해서 푼 방법
import java.util.Arrays;
class Solution {
public int[] solution(int[] numbers) {
return Arrays.stream(numbers).map(i -> i * 2).toArray();
}
}
import java.util.*;
class Solution {
public ArrayList solution(int[] numbers) {
ArrayList<Integer> answer = new ArrayList<>();
for(int num : numbers){
answer.add(num*2);
}
return answer;
}
}
컬렉션 프레임워크로 푸는 방법도 생각해볼것!

'프로그래머스 > 코딩테스트 입문_자바' 카테고리의 다른 글
프로그래머스 Lv.0 _ JAVA _2 (0) | 2023.04.19 |
---|