코딩테스트 | (c++) 백준 2588번: 곱셈

trevor1107·2021년 3월 15일
0

✅문제

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
문제 보기

🎹입력

첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

📢출력

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

✍풀어보기

#include<iostream>
// std 네임스페이스 스코프를 생략하고 사용한다는 의미
using namespace std;

int main()
{
	int a = 0, b = 0;

	cin >> a >> b;

	int digits[3];
	
   
   	// 두번째 숫자의 1의자리를 구한다. 
	digits[0] = b % 10;
	// 10의 자리를 구한다.
	digits[1] = (b % 100) / 10;
	// 100의 자리를 구한다.
	digits[2] = b / 100;

	int result[4];
	// (3) 구하기 : 두번째 숫자의 일의자리를 첫번째 숫자와 곱한다.
	result[0] = a * digits[0];
	// (4) 구하기 : 두번째 숫자의 십의자리를 첫번째 숫자와 곱한다.
	result[1] = a * digits[1];
	// (5) 구하기 : 두번째 숫자의 백의자리를 첫번째 숫자와 곱한다.
	result[2] = a * digits[2];

	// (6) 구하기 : 첫번째 숫자 a와 두번째 숫자 b를 곱한다.
	result[3] = a * b;
	
	const int length = sizeof(result) / sizeof(int);
	for (int i = 0; i < length; i++)
	{
		cout << result[i] << '\n';
	}

	return 0;
}

이전 문제들에 비하면, 어렵다면 어렵고 쉽다면 쉬운 문제!
핵심은 1의자리 10의자리 100의 자리를 구하는건데

나의 경우
1의자리는 10으로 나누어떨어져서 나오는 값 0~9
10의 자리는 100으로 나누어지는 값 0~99에 10으로 나눈다
100의 자리는 100으로 나누면

여기서 처음에 10의 자리는 왜 10으로 나누면 안되나? 라는 의문이 들 수도 있다.
근데 10으로 나누게되면 10보다 큰 수 까지 포함된다는 사실을 잊지 말아야 한다.
즉 100의자리까지 포함된다구!!

배열 초기화 방법

int array[배열 길이]; // 배열의 길이는 상수만 입력할 수 있다(const)

// 0번째 인덱스 부터 지정한 숫자까지 대입되고 나머지는 0으로 초기화 됨
int cat[3] = { 0, 1 }; // cat[0] = 0, cat[1] = 1, cat[2] = 0

// 0번째 인덱스 부터 마지막 인덱스까지 0으로 모두 초기화 됨
int dog[5] = { }; // dog[0] = 0, dog[1] = 0 ...


참고 자료 및 사이트 (감사합니다)

profile
프론트엔드 개발자

0개의 댓글