-
[C][백준] ChatGPT로 백준 문제를 풀었다? - Python to C language migration, 9012번 괄호Algorithm/백준 2023. 3. 18. 22:03728x90
들어가기에 앞서...
이 포스트는 BOJ의 치팅을 권장하는 것이 아닙니다. 작성자도 기존에 Python으로 풀었던 문제를 C언어로 변환한 것입니다.
도입
ChatGPT는 코딩도 뚝딱해준다.
그러면 혹시 코딩테스트도 통과할 수 있을까..?
그렇지만, 처음 보는 문제를 내가 안 풀었는데, ChatGPT가 쓴 코드로 제출한다면 반칙이다. 그래서, 예전에 Python으로 쓴 코드를 C언어로 code migration하는 것으로 대체하겠다.
추후 양심에 털이 난다면, 아예 새로운 문제로 실험해보겠다.
문제
실험에 사용될 문제는 Baekjoon Online Judge에 있는 9012번 '괄호'이다.
https://www.acmicpc.net/problem/9012
스택을 사용하여 푸는 기본적인 문제이다. solved.ac 실버4등급 문제로, 어렵다면 어렵고 쉽다면 쉬운 문제이다.
실험 방법은 다음과 같다.
- ChatGPT에게 공손히 인사하기
- 문제를 영어로 입력하기
- Python코드 입력하기
- 변환된 코드를 BOJ에 제출하기
- ChatGPT 칭찬하기
실험
def P9012(): num = int(input()) vps = list(input() for _ in range(num)) stack = [] for string in vps: try: for char in string: if char == '(': stack.append(1) elif char == ')': stack.pop() except IndexError: print('NO') continue print('NO' if stack else 'YES') stack.clear() if __name__ == '__main__': P9012()
ChatGPT가 작성한 코드 원본
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LENGTH 51 int is_vps(char* string) { int length = strlen(string); int stack[MAX_LENGTH] = {0}; int top = -1; for (int i = 0; i < length; i++) { if (string[i] == '(') { stack[++top] = 1; } else if (string[i] == ')') { if (top < 0) { return 0; } top--; } } return top == -1; } int main() { int t; scanf("%d", &t); char vps[MAX_LENGTH]; for (int i = 0; i < t; i++) { scanf("%s", vps); if (is_vps(vps)) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }
실험 결과
ChatGPT에 온라인 저지 문제와 정답 Python 코드를 주면 정답을 잘 출력한다.
솔직히 놀랐다 ㄷㄷ
이제 대충 Python으로 코드 쓰고, C언어로 바꿔서 시간 단축할 수도 있나? ㄷ
다음에는
- 문제의 정보를 주지 않고, language migration 하는 실험
- 정답 코드 없이 처음부터 문제를 푸는 실험
- 규모가 큰 프로그램을 migration 하는 실험
을 해보겠다.
그럼 안녕~
728x90'Algorithm > 백준' 카테고리의 다른 글
[C][백준] 5567. 결혼식 구현하기 | 깊이 제한 그래프 탐색 (0) 2023.03.06 [C][백준] 1932. 정수 삼각형 구현하기 | Dynamic Programming (0) 2023.03.03 [C][백준] 20055번 컨베이어 벨트 위의 로봇 풀이 : 원형 연결리스트, 삼성 SW 역량 테스트 기출 문제 (0) 2022.11.02 [C][백준] 1357번 뒤집힌 덧셈 풀이 : 문자열, 배열을 쓰지 않고, C 숫자 분리 (0) 2022.09.29 [C][백준] 2346번 풍선 터뜨리기 문제 풀이 : 원형 연결리스트를 사용하여 (0) 2022.09.07