[230222] 일기 : ChatGPT

WAYPIL·2023년 2월 21일
0

코드스테이츠-일기

목록 보기
8/10

코드스테이츠 부트캠프 프론트엔드 44기
Section 1 Unit 5 : [Javascript] 기초 3일차


1. 이야기의 발단

아침에 크루님께서 해주신 말에 따르면, ChatGPT가 HTML/CSS/JavaScript 코드까지 대신 짜준다고 한다!

물론 ChatGPT가 대단하다고는 알고 있었다. 그런데 어디까지나 백과사전 수준의 지식 제공이겠거니 생각하고만 있었는데…… 아니나 다를까 코딩까지 가능한 줄이야, 진짜 유능한 인공지능이다.

그래서 한번 사용해보았다!


2. 실제 사용

나는 ChatGPT에게 JavaScript로 병합 정렬(Merge sort) 코드를 짜달라고 부탁했다.

그 결과 깔끔한 코드가 하나 나왔다. 그리고 (코드에 주석이 없는 대신) 밑에 부연 설명까지 친절하게 달려 있다.

This code defines two functions: mergeSort and merge. The mergeSort function takes an array as input and recursively splits it into smaller sub-arrays until each sub-array has only one element. Then, it calls the merge function to combine the sub-arrays in a sorted order.

이 코드는 mergeSort랑 merge라는 두 함수를 정의한다. mergeSort()에는 배열이 입력되며, 그 배열을 '1서브배열:1요소' 상태가 때까지 배열을 계속 재귀적으로 분할시킨다. 그러고 merge()를 호출하여 쪼개진 배열을 정렬 순서대로 결합시킨다.

The merge function takes two sorted sub-arrays and combines them into a single sorted array. It uses two pointers, i and j, to keep track of the current positions in the left and right sub-arrays, respectively. It compares the elements at these positions and adds the smaller one to the result array, incrementing the corresponding pointer. Once one of the pointers reaches the end of its sub-array, it simply concatenates the remaining elements of the other sub-array to the result.

merge()는 정렬된 2개의 서브배열을 가져와 하나의 배열로 정렬+결합시킨다. i & j라는 2개의 포인터를 사용하여 좌우 서브배열의 현재 위치를 각각 추적한다. 이 위치에 있는 두 요소들을 비교하고, result 배열에 더 작은 요소를 추가하여 해당 포인터를 증가시킨다. 포인터 중 하나가 서브배열의 끝에 도달할 경우엔, 남은 서브배열의 나머지 요소(들)을 result 뒤에 연결시킨다.

Overall, this implementation of Merge Sort has a time complexity of O(n log n), where n is the length of the input array.
전반적으로 해당 구현(병합 정렬)은 'O(n log n)'의 시간 복잡도를 가지고 있다. 여기서 n은 입력 배열의 길이를 말한다.


2.1. 병합 정렬 알고리즘이란?

숫자로 이루어진 배열을 크기 순서대로 정렬하는 알고리즘들 중 하나를 말한다.

보시다시피, 배열을 최대한 쪼개고 그걸 다시 합치는 과정에서 순서를 정렬한다.


2.2. 저게 진짜 맞는 코드인가?

VSCode로 돌려본 결과, 완벽하게 크기 순서대로 정렬이 됐다!


3. 앞으로의 활용법

만약에 짜고 싶은 알고리즘이 있을 경우 ChatGPT를 이용하면 될 것 같다.

보통 구글 등지에 알고리즘 코드를 검색하면, 정석적인 코드가 아니라 자기 식대로 어레인지된 코드들이 많이 보인다. 심지어는 틀린 코드가 올라가 있는 경우도 있다! 물론 블로그 특성상 어쩔 수 없다지만 이는 코드 중립성을 해치게 된다.

때문에 이제부터 나는 ChatGPT를 이용할 것이다. ChatGPT로도 안 되면 그때 구글링을 이용하지 않을까 싶다.


<오늘의 한마디>

어제 다루었던 Quokka.js도 그렇고, 이 좋은 걸 왜 이제야 알았을까!

profile
Self-improvement Guarantees Future.

0개의 댓글