분수의 덧셈 / Lv.0
문제 설명 )
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한 사항 )
- 0 <numer1, denom1, numer2, denom2 < 1,000
입출력 예 )
입출력 예 설명 )
입출력 예 #1
- 1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
입출력 예 #2
- 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include <string>
#include <vector>
using namespace std;
pair<int, int> calculate(int a, int b)
{
// 큰 수부터 나누기 시작
int i = b;
while (1)
{
// 더 이상 나눌 수 없다면 break
if (i == 1) break;
if (a % i == 0 && b % i == 0)
{
a /= i;
b /= i;
}
else i--;
}
return make_pair(a, b);
}
vector<int> solution(int numer1, int denom1, int numer2, int denom2) {
vector<int> answer;
// 어짜피 더하고 또 기약분수로 만들어야 하므로,
// 처음부터 더하고 기약분수로 만들어준다.
int temp = numer1 * denom2 + numer2 * denom1;
pair<int, int> result = calculate(temp, denom1 * denom2);
answer.push_back(result.first);
answer.push_back(result.second);
return answer;
}
|
cs |
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120808
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Develop > 프로그래머스 (Cpp)' 카테고리의 다른 글
[프로그래머스] 다항식 더하기 (C++) (0) | 2023.03.06 |
---|---|
[프로그래머스] 최빈값 구하기 (C++) (0) | 2023.03.06 |
[프로그래머스] 안전지대 (C++) (0) | 2023.03.05 |
[프로그래머스] 삼각형의 완성조건 (2) (C++) (0) | 2023.03.05 |
[프로그래머스] 저주의 숫자 3 (C++) (0) | 2023.03.04 |