정수 이어붙이기

임홍원·2021년 4월 29일
0

정수 N을 입력 받는다. 0을 포함하여 한 자리 양의 정수를 N개 입력 받아 배열 X에 저장 한 후, 입력된 정수들로 이루어진 정수 M을 만들어 출력 하시오. 단, 1≦N≦10.(입력 정수가 중복될 수도 있다.)

입력예시

5

2 8 4 6 9

4

0 8 8 8


출력 예시

28469

888


코드

#include<stdio.h>

int main() {
	int N, x[10], a;
	scanf("%d", &N);

	int j = 0, tmp = 0;
	for (int i = 0; i < N; i++) {
		scanf("%d", &a);
		x[i] = a;
	}

	for (int i = 0; i < N; i++) {
		for (; j < N-1; j++) {
			x[i] *= 10;
		}
		j = 0;
		j += i+1;
		tmp += x[i];
	}
	printf("%d", tmp);
}

How to Solve & Think

  1. 출력 예시를 보니 10^(N-1) 승을 생각하였다.

  2. 두번째 for 문 에서 j를 N-1 까지 돌리면서 x[i] 번째 수에 계속해서 10을 곱해주었다. 왜냐하면 처음에 입력한 2 는 2X10^4 이고 두번째로 입력한 8은 8X10^3이 되어야 하기 때문이다.

  3. 안쪽 루프가 끝난 후 j를 0으로 초기화하고 이중for문 안쪽 루프문은 돌아가는 수가 줄어들어야 하므로 i+1만큼 더해준다.

  4. tmp 라는 변수에 x[i] 값을 더해준 후 출력한다.

10^N-1 을 생각하기는 간단했지만 막상 이중 for 문으로 구현하는게 살짝 애를먹었다. 다시 생각해보니 j 의 값이 i 의 값과 똑같아도 코드가 잘 돌아갈 것 같다.

0개의 댓글