Devxplorer - 부업·재테크 자동화 프로젝트

지루한건 로봇에게 시키고 당신은 생각만 하세요.

Devxplorere 자세히보기

IT (IT)🤖🧠/AI

[ChatGPT] 간단한 코딩, 알고리즘 학습하기

데브엑스플로러 2024. 4. 21. 21:33
728x90
반응형

ChatGPT를 통해 프로그램을 구현할 수 있다. 사용자 목적에 따른 기능 요구 사항과 비기능 요구 사항들을 잘 정리해서 전달해주면 프로그램의 Framework를 얻을 수 있다. 다양한 언어도 지원하며 Code Review후 Feedback을 통해 수정도 가능하다.

ChatGPT 프로그래밍 - 회의실 예약 시스템

간단한 기능을 제공하는 회의실 예약 시스템 구현을 요청했다. 기본적인 기능으로 사용자는 예약, 예약 취소, 예약 현황보기 등의 기능을 선택할 수 있다.

#include <iostream>
#include <string>
#include <map>

using namespace std;

class MeetingRoomReservationSystem {
private:
    map<string, bool> schedule; // 예약된 상태를 저장하는 맵

public:
    MeetingRoomReservationSystem() {
        // 초기에 모든 시간은 예약되지 않은 상태로 초기화
        for (int i = 9; i <= 18; ++i) {
            string time = to_string(i) + ":00";
            schedule[time] = false;
        }
    }

    void reserveMeetingRoom(string time) {
        if (schedule.find(time) != schedule.end() && !schedule[time]) {
            schedule[time] = true;
            cout << "회의실이 성공적으로 예약되었습니다." << endl;
        } else {
            cout << "이미 예약된 시간대입니다. 다른 시간을 선택해주세요." << endl;
        }
    }

    void cancelMeetingRoomReservation(string time) {
        if (schedule.find(time) != schedule.end() && schedule[time]) {
            schedule[time] = false;
            cout << "회의실 예약이 취소되었습니다." << endl;
        } else {
            cout << "해당 시간대에는 예약된 회의실이 없습니다." << endl;
        }
    }

    void printSchedule() {
        cout << "===== 회의실 예약 현황 =====" << endl;
        for (const auto& entry : schedule) {
            cout << entry.first << ": " << (entry.second ? "예약됨" : "예약가능") << endl;
        }
        cout << "==========================" << endl;
    }
};

int main() {
    MeetingRoomReservationSystem system;

    while (true) {
        cout << "1. 회의실 예약하기" << endl;
        cout << "2. 회의실 예약 취소하기" << endl;
        cout << "3. 예약 현황 보기" << endl;
        cout << "4. 종료" << endl;
        cout << "메뉴를 선택하세요: ";

        int choice;
        cin >> choice;

        switch (choice) {
            case 1: {
                cout << "예약할 시간을 입력하세요 (예: 10:00): ";
                string time;
                cin >> time;
                system.reserveMeetingRoom(time);
                break;
            }
            case 2: {
                cout << "취소할 예약 시간을 입력하세요 (예: 10:00): ";
                string time;
                cin >> time;
                system.cancelMeetingRoomReservation(time);
                break;
            }
            case 3:
                system.printSchedule();
                break;
            case 4:
                cout << "프로그램을 종료합니다." << endl;
                return 0;
            default:
                cout << "잘못된 선택입니다. 다시 시도하세요." << endl;
        }
    }

    return 0;
}

위와 같이 기본 기능을 제공하는 Code를 제공하고, 개발자 Review를 통해 한층 더 발전 시킬 수 있다.

ChatGPT 프로그래밍 - 웹 지도 프로그래밍

HTML과 JavaScript를 통해 웹프로그래밍을 진행할 수 있다.

    
    

사용자 위치 정보 지도에 표시하기

 

        function initMap() {
            // 초기 위치를 설정할 수 있지만, 이 예제에서는 초기 위치를 사용자의 위치로 설정하지 않습니다.

            // 맵을 생성하고 초기화
            var map = new google.maps.Map(document.getElementById('map'), {
                center: {lat: 37.5665, lng: 126.9780}, // 서울의 좌표를 기본 중심으로 설정
                zoom: 8
            });

            // 사용자의 현재 위치를 받아와서 지도에 마커로 표시
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function(position) {
                    var userLatLng = {
                        lat: position.coords.latitude,
                        lng: position.coords.longitude
                    };

                    var userMarker = new google.maps.Marker({
                        position: userLatLng,
                        map: map,
                        title: '당신의 위치'
                    });
                    
                    map.setCenter(userLatLng);
                }, function() {
                    // 위치 정보를 받아오지 못할 경우의 처리
                    handleLocationError(true, map.getCenter());
                });
            } else {
                // 브라우저가 Geolocation API를 지원하지 않을 경우의 처리
                handleLocationError(false, map.getCenter());
            }
        }

        function handleLocationError(browserHasGeolocation, pos) {
            var infoWindow = new google.maps.InfoWindow;
            infoWindow.setPosition(pos);
            infoWindow.setContent(browserHasGeolocation ?
                                  'Error: 사용자의 위치를 찾을 수 없습니다.' :
                                  'Error: 브라우저가 Geolocation 서비스를 지원하지 않습니다.');
            infoWindow.open(map);
        }
    
    

API들을 만들어서 제공해주고, API들을 조합하여 더 큰 기능들을 만들 수 있다.

ChatGPT 프로그래밍 - 웹 스크래핑

필요한 정보를 웹으로부터 수집하는 프로그래밍을 쉽게 만들 수 있다.

#include <iostream>
#include <vector>

using namespace std;

// 힙 자료구조 클래스 정의
class MinHeap {
private:
    vector<int> heap; // 힙을 저장할 벡터

    // 부모 노드의 인덱스를 반환하는 함수
    int parent(int index) {
        return (index - 1) / 2;
    }

    // 왼쪽 자식 노드의 인덱스를 반환하는 함수
    int leftChild(int index) {
        return 2 * index + 1;
    }

    // 오른쪽 자식 노드의 인덱스를 반환하는 함수
    int rightChild(int index) {
        return 2 * index + 2;
    }

    // 최소 힙 속성을 유지하도록 노드를 위로 올리는 함수 (Heapify Up)
    void heapifyUp(int index) {
        while (index > 0 && heap[parent(index)] > heap[index]) {
            swap(heap[index], heap[parent(index)]);
            index = parent(index);
        }
    }

    // 최소 힙 속성을 유지하도록 노드를 아래로 내리는 함수 (Heapify Down)
    void heapifyDown(int index) {
        int left = leftChild(index);
        int right = rightChild(index);
        int smallest = index;

        if (left < heap.size() && heap[left] < heap[index]) {
            smallest = left;
        }
        if (right < heap.size() && heap[right] < heap[smallest]) {
            smallest = right;
        }

        if (smallest != index) {
            swap(heap[index], heap[smallest]);
            heapifyDown(smallest);
        }
    }

public:
    // 새로운 노드를 추가하는 함수
    void insert(int value) {
        heap.push_back(value);
        heapifyUp(heap.size() - 1);
    }

    // 최상위 노드를 반환하고 삭제하는 함수
    int extractMin() {
        if (heap.empty()) {
            throw out_of_range("Heap is empty");
        }

        int min = heap[0];
        heap[0] = heap.back();
        heap.pop_back();
        heapifyDown(0);
        return min;
    }

    // 힙이 비어있는지 확인하는 함수
    bool isEmpty() {
        return heap.empty();
    }
};

int main() {
    MinHeap minHeap;

    minHeap.insert(10);
    minHeap.insert(20);
    minHeap.insert(15);
    minHeap.insert(30);
    minHeap.insert(25);

    cout << "최소 힙에서 최소값 추출: " << minHeap.extractMin() << endl;

    return 0;
}
반응형