안녕하세요.
요즘 ChatGPT가 엄청 핫하더라구요. 저는 노마드코더로 처음 접했는데 정말 신세계였습니다.
현재 한국에서도 사용할 수 있으니까 사용해보시길 바랄게요 !
ㅇ ChatGPT란?
ChatGPT는 훈련된 자연언어 처리 모델로 OpenAI에서 만든 GPT-3모델을 활용하여 방대한 텍스트 데이터를 학습했다고 합니다. 또한, 활용 범위는 매우 광범위하며, 실시간 대화를 통해 질문에 답을 할 뿐 아니라 실수도 인정하며, 부적절한 요청은 거부하는 역량도 갖추었습니다.
ㅇ 사용법
1. 가입
https://openai.com/blog/chatgpt/
해당 사이트에 접속하여 TRY CHATGPT를 클릭한 다음 Sign up 을 클릭합니다.
저는 구글로 회원가입을 했습니다.
다른 아이디로 가입하고 싶으신 분들은 이메일 주소를 작성한 후, 가입을 하시면 됩니다.
2. 사용
이제 ChatGPT를 사용할 수 있는 환경을 구축했습니다.
아래 입력칸이 있고, 왼쪽 상단에 그동안 했던 대화들이 저장되어 ChatGPT를 꺼도 대화내용이 사라지지 않습니다.
먼저 hi라고 입력했는데 다음과 같이 답이 왔습니다.
한국어로도 입력해봤는데 자연스럽게 답이 오네요.
ChatGPT가 코딩을 할 수 있다해서 저도 시켜봤습니다.
제가 풀었던 백준 문제 코드를 개선해달라고 해봤습니다.
문제는 에라토스테네스의 체입니다.
https://www.acmicpc.net/problem/2960
개선하기 전 제가 짠 코드입니다. (많이 부족..)
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int cnt = 0;
boolean[] prime = new boolean[n+1];
for(int i=2; i<=n; i++) {
for(int j=1; i*j<=n; j++) {
if(prime[i*j]) continue;
prime[i*j] = true;
cnt++;
if(cnt==k) {
System.out.println(i*j);
break;
}
}
}
}
}
개선된 코드입니다.
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int cnt = 0;
boolean[] prime = new boolean[n+1];
for (int i = 2; i <= n; i++) {
if (!prime[i]) {
cnt++;
if (cnt == k) {
System.out.println(i);
break;
}
for (int j = 2; i * j <= n; j++) {
prime[i * j] = true;
}
}
}
}
}
개선된 코드와 더불어 변경사항도 알려줬습니다.
해석하면 다음과 같습니다.
이 최적화된 버전의 변경 사항은 다음과 같습니다.
- 원래 코드에 사용된 내부 루프 대신 외부 루프를 사용하여 2에서 n까지 숫자를 반복합니다.
- cnt변수를 1부터 시작하는 대신 0으로 초기화합니다 .
- prime[i * j] = true소수 인지 확인 후 소수의 배수를 합성수( )로 표시합니다 . 이렇게 하면 반복 횟수가 줄어들고 성능이 향상됩니다.
- k번째 소수가 발견되는 즉시 루프에서 탈출합니다.
정말 이걸 보고 감탄이 나오더라구요. 개선까지 한다니..
그래서 바로 개선된 코드를 채점해봤는데 틀리다고 나왔습니다... ㅎㅎ
그리고 혹시 이것도 되나 해서 '자바로 백준 2960문제 풀어줘' 했는데 코드를 다 작성하더라구요.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
boolean[] arr = new boolean[n + 1];
for (int i = 2; i <= n; i++) {
if (!arr[i]) {
for (int j = i; j <= n; j += i) {
if (!arr[j]) {
arr[j] = true;
k--;
if (k == 0) {
System.out.println(j);
return;
}
}
}
}
}
}
}
코드를 작성하고 코드에 대한 설명도 추가해서 알려주더라구요.
영어로 나온건데 번역했습니다.
그리고 채점을 돌리니 맞았다고 나옵니다.
맞긴 맞는데 최적화된 코드는 아닌 것 같다고 느꼈어요. Scanner를 사용해서 그런지 시간이 좀 걸려서 나오더라구요.
이건 제가 짠 코드입니다.
ㅇ 느낀점
결과가 어찌됐든 ChatGPT는 굉장히 핫할 수 밖에 없다고 느꼈습니다. 코드 개선에 문제를 해석하고 코드를 짤 수 있다는 인공지능이라니.
한편, 구글에서는 하루 이용자가 천 만 명을 돌파하여 새로운 검색엔진이 될 수도 있다고 느껴 긴급 회의까지 진행했다고도 하는데 확실히 이 정도라면 구글에 비견될 수 있을 만한 시스템이라고 생각합니다.
이 외에도 미국에선 학생들이 과제를 거의 ChatGPT로 해결한다고 해서 문제가 되기도 한답니다.
현재 ChatGPT는 유료화가 진행중이라 하니 바로 사용해보세요!!
자세한 사항은 영상 참고 바랄게요.
'Etc' 카테고리의 다른 글
[Windows] 원격 데스크톱 포트 변경 및 연결 (1) | 2023.04.26 |
---|