개발자 도전기
[국비지원] 49일차 - 분수의 덧셈 본문
오늘은 오랜만에 프로그래머스 문제를 풀어서 풀이를 올려본다
https://school.programmers.co.kr/learn/courses/30/lessons/120808
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
두 분수의 합을 구한 후 분자와 분모가 서로소인 기약분수가 되게 하는 문제이다.
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
// 두 분모의 최대공약수 구하기
int G = GCD(denom2, denom1);
// 두 분모의 최소 공배수 구하기
int LCM = denom1 * denom2 / G;
// 분모가 최소공배수일 때 분자의 값 구하기
numer1 = mul(numer1, denom1, LCM);
numer2 = mul(numer2, denom2, LCM);
int numer = numer1 + numer2;
// 두 분수의 덧셈 후 다시 분자와 분모의 최대공약수 구하기
G = GCD(numer, LCM);
// 서로소 만들기
LCM /= G;
numer /= G;
return new int[]{numer, LCM};
}
// 최대공약수 구하기
public int GCD(int max, int min){
int rest = max % min;
return rest == 0? min : GCD(min,rest);
}
// 분모가 최소공배수일 때 분자의 값 구하기
public int mul(int numer, int denom, int LCM){
int r = 1;
if(denom != LCM){
r =LCM / denom;
}
return r*numer;
}
}
예전에 정리해두었던 유클리드 호제법을 사용해 풀어보았다
2024.02.29 - [개발공부/TIL] - [국비지원] 17일차- 프로그래머스.피자 나눠 먹기(2) GCD, LCM
[국비지원] 17일차- 프로그래머스.피자 나눠 먹기(2) GCD, LCM
오늘의 문제 class Solution { public int solution(int n) { int result = 0; loop: for(int i = 1; i
abc-datatype.tistory.com
1. 분모의 최소공배수로 통분한다.
2. 분자와 분모를 기약분수로 만든다
의 순서로 풀었는데 풀고 다른 분들의 풀이를 보니 분모의 최소공배수를 구할 필요 없이 두 분수를 통분해서 더한 다음 최대공약수로 나눠도 되는거였다 ..
2024.04.17 - [개발공부/Spring] - [Spring] PreparedStatement를 이용해서 데이터베이스 출력하기
[Spring] PreparedStatement를 이용해서 데이터베이스 출력하기
PreparedStatement JDBC의 인터페이스 중 하나이다 SQL 쿼리의 일부를 동적으로 바꿀 수 있다 입력 매개변수를 안전하게 처리할 수 있다 - setString() 메소드 사용 Statement가 아닌 PreparedStatement를 사용하는
abc-datatype.tistory.com
2024.04.17 - [개발공부/SQL] - [SQL] 명령문
[SQL] 명령문
스키마(schema) 데이터베이스의 구조를 정의하는 개념 테이블을 포함한다 // 스키마 생성하기 CREATE DATABASE test1; 테이블(Tables) 데이터를 저장하는 데 사용하는 구조적 객체 열(Column)과 행(Row)으로 구
abc-datatype.tistory.com
'개발공부 > TIL' 카테고리의 다른 글
[국비지원] 51일차 (0) | 2024.04.19 |
---|---|
[국비지원] 50일차 (0) | 2024.04.18 |
[국비지원] 48일차 (0) | 2024.04.17 |
[국비지원] 47일차 (0) | 2024.04.16 |
[국비지원] 46일차 (0) | 2024.04.12 |