본문 바로가기

박기완 코딩교육/정보올림피아드 대비

코드업 4532 곱셈 [ 정보올림피아드 초등]


디게 신선한 문제다.
어떤 능력을 요구해서 낸 문제일까? 

내가 생각하기엔  딱히 특유의  알고리즘없이 기본 코딩실력보는 문제랄까. 

문제 해결의 키는  두번째 값에대해   자리별 숫자를 어떻게 얻어낼것인가 이다.

문자열 형태로 입력받아서  처리할수도 있지만  세자릿수라는게 명확히 정해져있는 상황이여서

나머지 연산자를 이용해  자리별 숫자들을 얻어냈다.

 

**자리별 숫자 구하는 과정에서   연산자 우선순위 문제로  잘못될수있으니 괄호로 명확히 표현

이 둘의 차이랄까?

int n1 = first* (second%10);
int n1 = first* second%10;

 

 

 

#include <stdio.h>
 
int main()
{
	int first;
	int second;
	scanf("%d",&first);
	scanf("%d",&second);
	
	/*
	접근방법이 많다
	지금 결국 두번째값에대해  자리별 값을 알아내긴해야하는 상황
	
	문자열형태로 접근할수도있겠고
	그냥 세자리밖에 안되니 노가다 해도될듯
	
	*/ 

	// second 변수에 대해  자릿수 값구하는 과정에서  연산자 우선순위 문제가 발생할 가능성이 크다.
    //그래서 괄호 이용해 명확히 표현 
	int n1 = first* (second%10);
	int n2 = (first*((second%100)/10));
	int n3 = first * (second/100);
	
	printf("%d\n%d\n%d\n%d\n",n1,n2,n3,n1+n2*10+n3*100);
	
	return 0;	
}