최근 온라인 상에서 화제가 되고 있는 사진이 있습니다. 바로 챗GPT에게 3.9와 3.11 중에 더 큰 수를 묻자 3.11이 더 큰 수라고 대답하는 모습이었는데요.

아무리 GPT가 멍청하다지만... 설마 그 정도도 모르겠어요? 제가 직접 GPT에게 물어봤습니다.

놀랍게도 GPT는 당당하게 3.11이 3.9보다 더 큰수라고 대답했습니다. 이유를 물어도 무슨 이상한 이유만 대고 말이죠.

그래서 다시 물어봤습니다. 3.90과 3.11 중에서는 3.90이 더 크다고 정상적으로 대답했습니다. 그리고 3.90이 3.9와 같다는 것도 알고 있고요.

3.9는 3.90과 동일하지만, 3.11보다 작다는 게 무슨 소리죠? 제가 3.90이 3.11보다 더 크지 않느냐고 되묻자 GPT는 결국에는 3.11이 3.9와 3.90보다 더 크다는 결론을 내렸습니다.

아직 AI가 인류를 지배하기엔 너무 수준이 떨어져 보입니다. 이렇게 GPT가 3.11이 3.9보다 더 크다고 고집을 부리는 이유가 무엇일까요?
GPT가 학습을 할 때는 주로 Python을 사용합니다. 이 때 학습 데이터에 Python 3.9와 Python 3.11 중에서 Python 3.11을 더 크게 보는 경향이 있기 때문에, 결론적으로는 이상한 답변을 내리게 된 것으로 보입니다.
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
Softeer에 재미있는 문제가 출제되었는데요. 바로 우리가 직접 고집불통 GPT식 숫자 비교 프로그램을 구현하는 것입니다. 저는 이 문제를 C언어를 이용해서 풀었습니다.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Version {
int x;
int y;
};
int compare(const void *a, const void *b) {
struct Version *versionA = (struct Version *)a;
struct Version *versionB = (struct Version *)b;
if (versionA->x != versionB->x) {
return versionA->x - versionB->x;
} else {
if (versionA->y < versionB->y) return -1;
if (versionA->y > versionB->y) return 1;
return 0;
}
}
int main(void)
{
int n;
scanf("%d",&n);
int x[n], y[n];
for(int i=0; i<n; i++){
char str[10];
scanf("%s", str);
if (strchr(str, '.')) {
char *ptr = strtok(str, ".");
x[i] = atoi(ptr);
ptr = strtok(NULL, ".");
y[i] = atoi(ptr);
} else {
x[i] = atoi(str);
y[i] = -1;
}
}
struct Version v[n];
for(int i=0; i<n; i++){
v[i].x = x[i];
v[i].y = y[i];
}
qsort(v, n, sizeof(struct Version), compare);
for(int i=0; i<n; i++){
if(v[i].y == -1) printf("%d\n",v[i].x);
else printf("%d.%d\n",v[i].x,v[i].y);
}
return 0;
}
C에서는 딕셔너리와 정렬을 지원해주지 않기 때문에 직접 구조체와 정렬 함수를 구현해야 했습니다. 하지만 Python에서는 dict()과 sort()를 지원해주기 때문에, python을 사용한다면 이 문제를 더 쉽게 풀 수 있겠죠?
'CS > C' 카테고리의 다른 글
| C언어로 스택/큐 구현하기 (0) | 2025.04.12 |
|---|---|
| C언어로 이진 트리 구현하기 (0) | 2025.04.12 |
| C언어로 BFS 구현하기 (0) | 2025.02.07 |
| C언어로 DFS 구현하기 (0) | 2025.02.07 |
| C언어로 gcd()와 lcm() 구현하기 (0) | 2025.02.07 |