새소식

코딩테스트

프로그래머스 코딩테스트 Lv.0 : Day2(사칙연산, 조건문, 배열)

  • -
  • 5. 두 수의 나눗셈 : 정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
내가 푼 풀이
class Solution {
    public int solution(int num1, int num2) {   
        double num = (double)num1/num2;
        int answer = (int)(num*1000);
        return answer;
    }
}

다른 풀이
int answer = 0;
double result  = (double)num1/num2*1000
anwer = (int)result;
return answer;

 

 

  • 6. 숫자 비교하기 : 정수 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;
    }
}

다른 풀이
int answer = (num1==num2)?1:-1;
return answer;
--------------------------------------------------
if(num1==num2) return 1;
else return -1;

*삼항연산자 : (조건문)참:거짓;  ->  if~else문을 간략하게 정리할 수 있음.

 

 

  • 7. 분수의 덧셈 : 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
내가 푼 풀이
어려워서 풀지 못했다ㅠㅠ(다른 풀이 참고해서 쓴 풀이)
class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        
        int[] answer = new int[2];
        int boonja = (numer1*denom2)+(numer2*denom1);
        int boonmo = denom1*denom2;
        
        int max = 0; //최대 공약수
        //최대공약수, for문으로 나머지가 0이 될때까지 반복. 
        for(int i=1; i<=boonmo&&i<=boonja; i++){
            if(boonja%i==0&&boonmo%i==0){
                max = i;
            }
        }
        answer[0] = boonja/max;
        answer[1] = boonmo/max;
        return answer;
    }
}

다른 풀이
int[] answer = new int[2];
answer[0] =  (numer1*denom2)+(numer2*denom1); //분자
answer[1] = denom1*denom2;

//최소값 구하기
int min = Math.min(answer[0], answer[1]);
int max = 1;

//약분하는 수 중 가장 큰 수를 찾기(최대공약수)
for(int i=1; i<=min; ; i++){
   if(answer[0]%i==0 && answer[1]%i==0){
      max=i;
   }
}
//약분
answer[0] /= max;
answer[1] /= max;

return answer;

*기약분수 : 분모와 분자가 1 이외에 공약수가 없는 분수

*먼저 두 분수의 분모를 같은 수로 만들어준다. Math.min()을 이용해서 최솟값을 찾은 이후 for문을 이용하여 최대공약수를 찾기! 이때 분자와 분모를 나누었을 때 나머지가 0인 값이어야하므로 조건을 if문을 이용해서 조건을 추가해주어야 한다. 이 중 가장 큰 값을 찾고 분자와 분모 값에 나누어 주면 기약분수가 된다.

 

 

  • 8. 배열 두 배 만들기 : 정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
내가 푼 풀이
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;
    }
}

다른 풀이
for(int i=0; i<numbers.length; i++) {
   numbers[i]*=2;
}
return numbers;

*배열의 길이 : 배열에 저장할 수 있는 전체 항목의 개수. 변수.length로 배열의 길이를 읽을 수 있다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.