반응형

다시 돌아온 코딩 테스트 타임이다. 진짜 다 까먹어서 기초의 기초의 기초부터 튀기려고 한다.
근데 나 첫 취준 때 코테 보기 싫어서 공기업 커리어 탄건데...
결국 공공도 코테 보는 엔딩^^ 이럴 거면 그냥 사기업 갈까 봐요

각설하고 시작하는 이번 문제는 "분수의 덧셈"입니다.
사실 이것도 n트만에 성공했어요.
그래도 자바가 공통적으로 많이 쓰인대서 자바 하려고 하는데... 낯설다.
나 전에 자바로 어떻게 어플도 만들고 했지? 과거의 나 칭찬해~ 

문제 내용

첫 번째 분수의 분자와 분모를 뜻하는 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]

작성 코드 (1차 도전)

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = {0, 0};
        int[] divn = new int[1000]; // 기약분수를 위해, 최대공약수 찾는 용도
        int i = 1; int n = 0;
        
        // 일단 분수 덧셈 먼저 해준다
        answer[0] = numer1*denom2 + numer2*denom1;
        answer[1] = denom1*denom2;
        
        // 덧셈 결과물을 기약분수로 나누기 위해 최대 공약수를 찾는 부분
        for (i=1; i<=answer[0] || i<= answer[1]; i++){
            if ((answer[0]%i==0) && (answer[1]%i==0)){
                divn[n] = i; 
                n++;
            } // 가장 마지막에 들어간 n이 최대 공약수임
              // 근데 생각해보니 배열 안쓰고 그냥 변수 하나로 해도 되잖아?
        }
        
        answer[0] = answer[0]/divn[n-1];
        answer[1] = answer[1]/divn[n-1];
        
        return answer;
    }
}

작성 코드(2차 도전)

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = {0, 0};
        int i = 1;
        int divmax = 0; // 최대공약수를 저장할 수 있는 변수로 바꿈
        
        answer[0] = numer1*denom2 + numer2*denom1;
        answer[1] = denom1*denom2;
        
        for (i=1; i<=answer[0] || i<= answer[1]; i++){
            if ((answer[0]%i==0) && (answer[1]%i==0)){
                divmax = i; // 제일 마지막에 저장되는 애가 최대공약수
            } 
        }
        
        answer[0] = answer[0]/divmax;
        answer[1] = answer[1]/divmax;
        
        return answer;
    }
}

사실 뇌가 굳어서 구글의 힌트를 조금 보고 풀긴 했다.
사실 진짜진짜 처음에는 이프엘즈 난무함...ㅋ
어려운 문제도 척척 푸는 그 날까지 노력해보겠어

(문제 출처 : 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/120808)

반응형

'공부 > 코딩' 카테고리의 다른 글

[프로그래머스/입문] 저주의 숫자 3  (0) 2024.12.05

+ Recent posts