[C] 백준 2935번: 소음

be_clever·2022년 2월 25일
0

Baekjoon Online Judge

목록 보기
94/172

문제 링크

2935번: 소음

문제 요약

10의 거듭제꼴 형태의 두 정수에 대한 곱셈 또는 덧셈을 수행해야 한다.

접근 방법

두 수가 모두 10의 거듭제곱이기 때문에 어렵지 않게 풀 수 있습니다.

덧셈의 경우 두 수의 길이가 같다면 가장 왼쪽의 수를 2로 바꿔주면 됩니다. 만약 두 수의 길이가 다르다면, 더 긴 수에서 짧은 수의 1 위치에 1을 추가해주면 됩니다.

곱셈의 경우, 1을 출력하고, 두 수의 0의 갯수의 합만큼 0을 출력해주면 됩니다.

코드

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

int is_same(char str1[], char str2[])
{
	if (strlen(str1) != strlen(str2))
		return 0;

	for (int i = 0; i < strlen(str1); i++)
		if (str1[i] != str2[i])
			return 0;

	return 1;
}


int main(void)
{
	char num1[105], num2[105], oper;

	scanf("%s %c %s", num1, &oper, num2);

	if (oper == '+')
	{
		if (is_same(num1, num2))
		{
			printf("2");
			for (int i = 0; i < strlen(num1) - 1; i++)
				printf("0");
			return 0;
		}

		if (strlen(num1) > strlen(num2))
		{
			num1[strlen(num1) - strlen(num2)] = '1';
			printf("%s", num1);
		}
		else
		{
			num2[strlen(num2) - strlen(num1)] = '1';
			printf("%s", num2);
		}
	}
	else
	{
		printf("1");
		for (int i = 0; i < strlen(num1) + strlen(num2) - 2; i++)
			printf("0");
	}

	return 0;
}
profile
똑똑해지고 싶어요

0개의 댓글