ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [올리브씨의 알고리즘 입문] Day 2 - 사칙연산, 조건문, 배열
    알고리즘/프로그래머스_입문 2024. 3. 25. 17:59

    005. 두 수의 나눗셈

    문제 설명.

      정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.

     

    제한 사항.

      0 < num1 ≤ 100

      0 < num2 ≤ 100

     

    입출력 예.

    num1 num2 result
    3 2 1500
    7 3 2333
    1 16 62

    풀이.

    class Solution {
        public int solution(int num1, int num2) {
            //변수 선언
            int answer = 0;
            int minVal = 0;
            int maxVal = 100;
    
            //조건 만족 확인
            boolean check = (minVal<=num1 && num1<=maxVal 
                          && minVal<=num2 && num2<=maxVal);
    
            if (check)
                double temp = 1000*num1/num2;
                answer = (int)temp;
                return answer;
        }
    }

    006. 숫자 비교하기

    문제 설명.

      정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.

     

    제한 사항.

      0 ≤ num1 ≤ 10,000
      0 ≤ num2 ≤ 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;
            int minVal = 0;
            int maxVal = 10000;
            
            //제한 조건 만족 여부
            boolean var = (minVal<=num1 && num1<=maxVal && minVal<=num2 && num2<=maxVal);
            boolean var2 = num1-num2 == 0;
                        
            
            //계산
            if(var){
                if(var2){
                    answer = 1;
                }else {
                    answer = -1;
                }
            }
            return answer;
        }
    }

    007. 분수의 덧셈

    문제 설명.

      첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

     

    제한 사항.

      0 <numer1, denom1, numer2, denom2 < 1,000

     

    입출력 예.

    numer1 denom1 numer2 denom2 result
    1 2 3 4 [5,4]
    9 2 1 3 [29,6]

    풀이.

    class Solution {
        public int[] solution(int numer1, int denom1, int numer2, int denom2) {
            
            //변수선언 및 제약조건
            int[] answer = new int[2];
            int numerFinal = 0;
            int denomFinal = 0;
            int minval = 0;
            int maxVal = 1000;
            
            boolean var = (minval<numer1 && numer2<maxVal
                        && minval<denom1 && denom1<maxVal
                        && minval<numer2 && numer2<maxVal
                        && minval<denom2 && denom2<maxVal);
            
            //계산
            if(var)
                numerFinal = (denom2*numer1) + (denom1*numer2);
                denomFinal = denom2*denom1;
                int gcd= getGcd(numerFinal, denomFinal); //최대공약수 메서드 호출
                answer[0] = numerFinal/gcd;
                answer[1] = denomFinal/gcd;
                return answer;
        }//end main
        
        //최대공약수 구하는 메서드
        public static int getGcd(int a, int b) {
        	if(a%b==0) {
    			return b;
    		}
    		return getGcd(b, a%b);
    	}
    }

    008. 배열 두 배 만들기

    문제 설명.

      정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

     

    제한 사항.

      -10,000 ≤ numbers의 원소 ≤ 10,000
      1 ≤ numbers의 길이 ≤ 1,000

     

    입출력 예.

    numbers result
    [1,2,3,4,5] [2,4,6,8,10]
    [1,2,100,-99,1,2,3] [2,4,100,-198,2,4,6]

    풀이.

    class Solution {
        public int[] solution(int[] numbers) {
            
            int arrLength = numbers.length;
            int[] answer = new int[arrLength];
            
            //제한조건
            int minLength = 1;
            int maxLength = 1000;
            int minNumbers = -10000;
            int maxNumbers = 10000;
            
            //제한조건(배열 길이)
            boolean var1 = (minLength<=arrLength && arrLength<=maxLength);
            
            for(int i=0; i<arrLength; i++){
                //제한조건(값 크기)
                boolean var2 = (minNumbers<=numbers[i] && numbers[i]<=maxNumbers);
                if(var1&&var2){
                    answer[i] = numbers[i]*2;
                }
            }
            return answer;
        }
    }

    출처 :https://school.programmers.co.kr/ 입문 알고리즘

    https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc&languages=java

Designed by Tistory.