백준 10988

marshmelody·2024년 4월 5일
0

백준의 10988 번을 풀어보았다.
그동안 너무 C++만 사용하여서 오랜만에 C로 풀어보았는데 막히는 부분이 있었다.

내가 처음에 썼던 코드는 이러하다.

#include <stdio.h>
#include <string.h>

int main() {
	char string[101];

	scanf("%c", &string);


	int i,  k=1 ;

	
	for (i = 0; i < (sizeof(string)-1) / 2; i++) {
		if (string[i] != string[sizeof(string) - 2 - i]) {
			k = 0;
			break;
		}
		
	}
	
	printf("%d", k );
	
	return 0;
}

에러가 뜨는 것은 아니지만 자꾸 다른 답이 나오길래 고민을 해보았다.
문자열의 길이를 셀 때 sizeof에서 1을 빼는 방식으로 세왔는데, 그전까지 그 방법이 잘 작동했던 이유는 애초에 초기화 당시 문자열을 할당했기 때문이었다...

나는 내가 string 배열에 101칸의 메모리를 할당해놓고 계속 sizeof로 문자열 길이를 세는 멍청한 짓을 하고 있었던 것이다ㅏ....

그리고 문자열임에도 변환문자로 %c를 사용한 점 또한 문제였다.

그래서 %c->%s로 고치고 sizeof를 모두 strlen으로 바꿔주었더니 정상작동하는 것을 볼 수 있었다.

profile
소프트웨어 전공생 백엔드 개발자 도전기

0개의 댓글

관련 채용 정보