[프로그래머스] C언어 더 크게 합치기

Jaemoon Lee·2023년 6월 27일

[프로그래머스]

목록 보기
14/15

문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.

제한사항
1 ≤ a, b < 10,000

입출력 예
a b result
9 91 991
89 8 898

입출력 예 설명

입출력 예 #1
a ⊕ b = 991 이고, b ⊕ a = 919 입니다. 둘 중 더 큰 값은 991 이므로 991을 return 합니다.

입출력 예 #2
a ⊕ b = 898 이고, b ⊕ a = 889 입니다. 둘 중 더 큰 값은 898 이므로 898을 return 합니다.

====================================================
문제는 입력받은 두 값을 붙여서 더했을 때, 더 큰 값이 나오는 함수를 작성하도록 요구하고 있다.
코드의 알고리즘은
1. 두 정수 중 더 큰 값을 반환하는 함수를 만든다.
2. 두 정수를 붙여서 더하는 함수를 만든다.
3. 입력받은 두 정수 A, B를 2번 함수를 이용해 붙여서 각각 A+B, B+A로 계산하고, 1번 함수를 이용해 그 값을 비교한다.

로 구성할 수 있다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <stdlib.h>

// 두 정수 중 더 큰 값을 반환
int getMax(int a, int b) {
	return (a > b) ? a : b;
}

// 두 정수를 연결한 값을 계산
int concatenate(int a, int b) {
	int power = 1;
	while (power <= b)
		power *= 10;
	return (a * power) + b;
}

//A+B, B+A를 계산한 뒤 더 큰 값을 반환
int solution(int a, int b) {
	int ab = concatenate(a, b);
	int ba = concatenate(b, a);

	return getMax(ab, ba);
}

int main() {
	int a, b;
	scanf("%d %d", &a, &b);

	int result = solution(a, b);

	printf("%d", result);

	return 0;
}
profile
초보개발세발자

0개의 댓글