[백준] 2864번: 5와 6의 차이 (C언어)

728x90
728x90

https://www.acmicpc.net/problem/2864

 

2864번: 5와 6의 차이

첫째 줄에 두 정수 A와 B가 주어진다. (1 <= A,B <= 1,000,000)

www.acmicpc.net

난이도: solved.ac 브론즈 2

 

 

일단 두 수가 각각 몇 자리 수인지 파악하여

 

일의 자리부터 시작해 두 수 각각의 최대 자릿수까지 하나씩 보면서

 

5인 건 6으로 바꿔주고 6인 것은 5로 바꿔주었다

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {
	int A, B, len_A = 1, len_B = 1;	// len_A, B: A와 B의 각 최대 자릿수
	int i, minA, maxA, minB, maxB;
	scanf("%d %d", &A, &B);
	minA = A;	maxA = A;	minB = B;	maxB = B;

	int temp = A;	// A의 최대 자릿수 파악
	for (i = 10; temp / i != 0; i * 10) {
		len_A++;
		temp /= i;
	}

	temp = B;	// B의 최대 자릿수 파악
	for (i = 10; temp / i != 0; i * 10) {
		len_B++;
		temp /= i;
	}

	int deci = 10;
	for (i = 0; i < len_A; i++) {
		if (A / (deci / 10) % 10 == 5)	// 5인 것은 6으로 바꿔서 max에 저장
			maxA = maxA + deci / 10;

		else if (A / (deci / 10) % 10 == 6)	// 6인 것은 5로 바꿔서 min에 저장
			minA = minA - deci / 10;
		
		deci *= 10;
	}

	deci = 10;
	for (i = 0; i < len_B; i++) {
		if (B / (deci / 10) % 10 == 5)
			maxB = maxB + deci / 10;

		else if (B / (deci / 10) % 10 == 6)
			minB = minB - deci / 10;

		deci *= 10;
	}
	printf("%d %d", minA + minB, maxA + maxB);
	return 0;
}
반응형