IT/Programming 17

[프로그래밍 정보] 웹 기반 프로그래밍 컴파일러 - C, C++, Java, Python

알고리즘 공부를 하다보면 작성한 프로그램을 테스트 할 수 있는 컴파일러가 필요합니다. 최근에는 웹 환경에서 간단하게 입력해서 테스트 할 수 있는 웹 컴파일러가 많이 제공되고 있는 것 같아 소개합니다. 대부분 다양한 언어를 지원하고 로그인시 저장 기능을 제공하는 것으로 보입니다. 웹 베이스인 경우 단일 파일만을 지원하는 경우가 많습니다. 예전에 사용하던 웹 컴파일러가 생각이 안나서 chatGPT 에게 알고 있는지 문의해봤는데, 답변 받은 사이트 중 첫번째가 OnlineGDB 가 제가 사용했었던 사이트였습니다. 그 외 사이트에 대해서는 사용해보면서 내용을 추가로 업데이트 하려고 합니다. 1. OnlineGDB - C, C++, Java 등 다양한 언어를 지원하며 디버깅 기능을 제공 - 로그인 할 경우, 저장..

IT/Programming 2023.05.06

[알고리즘] 정올 1912 번 문제 : 미로 탐색

이번에는 그래프 탐색에 대한 알고리즘 문제를 소개합니다. #1 문제 이해 문제 제목과 같이 미로 탐색 문제이고 모든 방을 탐색하고 방문한 순서대로 출력하는 문제입니다. 입력은 미로 형태이지만, 각 노드를 방문하는 형식이 될 것 같습니다. 문제는 아래에서 확인하시고 충분히 읽어보시길 바랍니다. 정올 1912번 문제 JUNGOL www.jungol.co.kr #2 입력 방식 확인 입력된 미로 정보는 연결되는 방의 정보를 나타내는데, 문제에 나와있듯이 출발은 1번이다. 더보기 5 6 //! 방의 수 N:5, 문의 수 M:6 1 3 //! 각 문이 연결하는 두 방의 번호 1 3 3 4 4 2 2 1 1 4 4 5 //! 문의 수 M:6 만큼의 두 방의 번호가 입력 #3 그래프 그려보기 입력데이터는 다음과 같은 ..

IT/Programming 2023.04.26

[C++] push_back() 과 emplace_back() 의 차이점 정리

C++ STL의 Vector는 동적으로 크기가 조정되는 배열로, 데이터를 추가하거나 삭제할 때 사용됩니다. vector에 데이터를 추가하는 두 가지 일반적인 방법은 push_back()과 emplace_back()입니다. emplace_back() 이 더 효율적이라고 하는데, 이 두 함수의 차이점을 포스팅하려고 합니다. 1. push_back() push_back()은 vector에 새로운 요소를 추가할 때, vector의 끝에 새로운 요소를 추가하며, 새로운 요소를 추가하기 위해 복사(constructor) 또는 이동(move) 연산자가 호출됩니다. 즉, 새로운 요소를 생성한 다음, 기존의 요소들을 이동시키기 때문에 삽입할 데이터 타입에 대한 복사 생성자 또는 이동 생성자가 필요합니다. 예를 들어, 다..

IT/Programming 2023.04.24

[C++] Introduction to STL (Standard Template Library)

1. C++ STL 이란? C++ STL은 C++ Standard Template Library의 줄임말로, C++ 프로그래밍 언어에서 자주 사용되는 알고리즘, 컨테이너, 함수 객체 등의 일련의 템플릿 클래스와 함수들을 모아놓은 라이브러리입니다. C++ STL은 다양한 자료구조와 알고리즘을 제공하며, 매우 효율적으로 작동합니다. C++ STL은 템플릿 기반으로 작성되어 있기 때문에, 제네릭 프로그래밍(Generic Programming)을 할 수 있습니다. 제네릭 프로그래밍은 데이터 타입에 독립적인 코드를 작성하는 것으로, 일반적으로 더 유연하고 재사용성이 높은 코드를 작성할 수 있습니다. 2. C++ STL 의 구성요소 STL은 다음과 같은 주요 컴포넌트들로 구성됩니다. 컨테이너(Container): ..

IT/Programming 2023.04.24

[알고리즘] 정올 1440 번 문제 : 가까운 공통 조상 찾기

이번에는 루트가 있는 트리 구조와 노드 찾기에 대한 알고리즘 문제를 소개합니다. 1. 문제 이해 문제 제목과 같이 미로찾기 문제이고 이동할 수 있는 최대 거리를 구해야 합니다. 이동한 지점에서 각 방향으로 가능한 경로를 확인하면서 탐색해봐야 할 것 같습니다. 문제는 아래에서 확인하시고 충분히 읽어보시길 바랍니다. 정올 1440 문제 JUNGOL www.jungol.co.kr 2. 입력 방식 확인 이 문제는 입력 받은 데이터를 트리구조로 잘 만들어줄 필요가 있다. 입력 방식을 확인하면서 어떤 자료 구조로 받는게 좋을까를 고민해보자 입력데이터는 더보기 ↓클릭↓ 더보기 16 //! Node 갯수 16, 15개(N-1)의 두개의 정수 1 14 //! [1] 1:부모 14:자식 8 5 10 16 5 9 4 6 8..

IT/Programming 2023.04.22

[알고리즘] 정올 1238 번 문제 : 미로 탈출 중간 단계

알고리즘 시험을 준비하면서 풀었던 문제들을 하나씩 소개하려고 합니다. 응용 문제까지 풀기위해서는 하나에 대해서 확실하게 이해하고 풀수 있는지가 중요하다고 봅니다. 1. 문제 이해 문제 제목과 같이 미로찾기 문제이고 이동할 수 있는 최대 거리를 구해야 합니다. 이동한 지점에서 각 방향으로 가능한 경로를 확인하면서 탐색해봐야 할 것 같습니다. 문제는 아래에서 확인하시고 충분히 읽어보시길 바랍니다. 정올 1238 문제 JUNGOL www.jungol.co.kr 1. 전역변수 선언 입력을 받아 사용하기 위해 전역으로 선언 int maze[MAX][MAX]; //! 입력된 미로 Map 저장 int visit[MAX][MAX]; //! 방문한 지점 저장 int dir[4]; //! 방향 정보 저장 int dx[5]..

IT/Programming 2023.04.21

[C언어] 간단한 디버깅 팁 dummy printf

알고리즘 문제를 풀 때, 주석 처리 하지 않고, 코드를 유지하면서 필요할 때만 printf 를 사용했던 방법입니다. 1. 코드내에 #define 과 #ifdef ~ #endif 를 사용하여 function name 을 정의해준다. /* define 으로 printf 를 on/off 한다. */ #define _TEST #ifdef _TEST #define myprintf printf #else #define myprintf #endif 2. 새로 정의한 function name : myprintf 로 코드 작성을 한다. int main() { for (int i = 0; i < MAX; i++) { for (int j = 0; j < MAX; j++) { //! initialization } } int ..

IT/Programming 2023.04.20
반응형