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);
}
출력 예시를 보니 10^(N-1) 승을 생각하였다.
두번째 for 문 에서 j를 N-1 까지 돌리면서 x[i] 번째 수에 계속해서 10을 곱해주었다. 왜냐하면 처음에 입력한 2 는 2X10^4 이고 두번째로 입력한 8은 8X10^3이 되어야 하기 때문이다.
안쪽 루프가 끝난 후 j를 0으로 초기화하고 이중for문 안쪽 루프문은 돌아가는 수가 줄어들어야 하므로 i+1만큼 더해준다.
tmp 라는 변수에 x[i] 값을 더해준 후 출력한다.
10^N-1 을 생각하기는 간단했지만 막상 이중 for 문으로 구현하는게 살짝 애를먹었다. 다시 생각해보니 j 의 값이 i 의 값과 똑같아도 코드가 잘 돌아갈 것 같다.