문제를 좀 이상하게 이해해서 시간이 좀 걸렸다.

처음에 나는 입력을 어떻게 받는 것이 좋을지 고민하다가 fgets로 문자열 형식 입력을 받은 다음, atoi 함수를 써서 각 자릿수를 더하면 간단하게 구현할 수 있겠다고 생각했다.

 

<나의 오답>

 

위와 같이 인수가 호환이 안된다는 에러가 뜨는거다. 그래서 어떻게 호환시키지 하다가 그냥 저 밑줄 쳐진 부분 앞에다가 &를 넣어보았더니 밑줄이 사라졌다. 그래서 이어서 코드를 짜봤다.

근데 출력을 해보니 뭐가 문젠지를 깨달았다.

&arr[i] 이렇게 넣으니까 그 시작 주소를 받아온 다음, 뒤에까지 모두 읽고 통째로 형변환을 시킨 것이다.

123402에서 먼저 1, 그다음 2 이렇게 되길 바랬는데 (1+2...)

123402, 23402, 3402 이런 식으로 형변환이 이어져버리게 된 것이다. (123402+23402+...)

 

그리고 또 하나의 문제. 이거는 문제를 풀고 나서야 깨달은 건데 arr 크기를 99999999로 줄 필요가 없었다.

99999999까지 정수에 들어갈 수 있는 것이기 때문에 크기를 9 주면 되는 거였다. (8자리+한국인의 정으로 1 추가)

손나 바카!

 

<정답>

#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main() {
	int sumL = 0, sumR = 0;
	int a;
	int size_a = 0; // a의 자릿수
	int sa10 = 1; // a의 자릿수만큼 10 곱한거

	scanf("%d", &a);
	int aa = a;

	while (aa != 0) {
		aa /= 10;
		size_a++;
		sa10 *= 10;
	}

	sa10 /= 10; /* 자릿수만큼 10을 곱했기 때문에 한 번 나눠줘야 함.
    ex) 10이면 2자리 수니까 10을 두번 곱해서 100이 됨. 한번 나눠준다.
    sa10에 0.1을 애초에 넣으면 되긴 하지만 정수형으로 선언하기 위해서..*/
	int mid = size_a / 2;

	for (int i = 0; i < mid; i++) {
		sumL += a / sa10;
		a %= sa10;
		sa10 /= 10;
	}

	for (int i = 0; i < mid; i++) {
		sumR += a / sa10;
		a %= sa10;
		sa10 /= 10;
	}

	if (sumL == sumR)
		printf("LUCKY");
	else
		printf("READY");
	return 0;
}

 

이렇게 다시 짰다. 형변환 작업 없애고 걍 정수 입력 받아서 10을 나누고 곱하고.. 하는 작업을 통해 왼쪽과 오른쪽의 합을 구함.

 

괜히 너무 어렵게 생각해서 시간 좀 썼다~