본문 바로가기

알고리즘/알고리즘 이론

알고리즘 문제 풀이를 위한 C++ 개발 환경

728x90
반응형

개발 환경 세팅이 필요한 이유 : 프로그래밍 언어별, 버전별로 컴파일 환경이 달라진다.

 

다음은 백준 온라인 저지에서 C++ 소스 코드를 C++ 14로 컴파일 하는 정보입니다.

 

C++14로 컴파일 할 때 컴파일 정보

 

 

일반적으로 다음과 같은 절차로 알고리즘 문제 풀이 결과를 확인합니다.

  1. 프로그래밍 언어 선택 후 알고리즘 문제 풀이
  2. 채점 사이트에서 프로그래밍 언어와 버전 선택 후 소스 코드 제출
  3. 서버에서 채점 진행 (컴파일 되는지 검사, 제한 조건 검사, 출력 결과가 정상적인지 검사)
  4. 결과 확인

소스 코드를 제출하면 해당 컴파일러 환경에 맞게 서버에서 소스 코드를 컴파일해줍니다. 그렇기 때문에 최대한 비슷한 환경에서 코드를 작성하는 것이 좋습니다.

만약 다른 개발 환경에서 작성한 코드를 제출하면 정상동작 하지 않을 수 있습니다.

ex) msvc 컴파일러를 사용할 경우 문제 없이 동작했던 코드가 gcc환경에서는 정상 동작 하지 않는 것


C++을 위한 통합 개발 환경과 컴파일러 알아보기

통합 개발 환경 (IDE) : Visual Studio, Dev C++, Visual Studio Code 등

컴파일러 : MSVC, GCC, LLVM/Clang 등

 

저는 Visual Studio 환경에 익숙하기 때문에 Visual Studio 2019를 사용할 예정입니다.

 

참고로 Visual Studio의 기본 컴파일러는 MSVC이기 때문에 채점 서버에서 사용하는 GCC 컴파일 환경에서도 동작할 수 있도록 코드를 작성할 예정입니다.
(Dev C++이 gcc를 사용하기 때문에 Dev C++를 사용 하기도 합니다.)

이번 포스팅을 작성 하면서 C++컴파일러에 대해 좀 찾아봤는데, 다양한 컴파일러가 있다는 것을 알게 되었습니다.

 

컴파일러 관련 키워드

더보기

- MSVC

- GCC 

- MinGW
- g++
- LLVM/Clang


자주 사용하는 헤더파일 사용하기

bits/stdc++.h

많이 사용되는 표준 라이브러리의 모음집으로 알고리즘 대회에서 가장 많이 사용되는 라이브러리입니다.

 

장/단점이 명확 하므로 상황에 따라 적절히 사용하면 좋을 듯 합니다.

[장점]

  • 작업 시간을 줄여줍니다. (시간이 촉박한 환경에서 유리)

[단점]

  • <bits/stdc++.h>는 GCC에서 사용하는 헤더로 GNU C++의 표준 라이브러리 헤더가 아닙니다. 그렇기 떄문에 GCC 컴파일러를 사용하지 않는 환경에서는 따로 설정을 해줘야지 사용가능합니다. (GCC는 GNU C++의 일부)
  • 컴파일하는 과정에서 불필요한 연산 과정이 포함될 수 있습니다. 그렇기 때문에 컴파일 타임이 증가하거나 파일 크기가 커질 수 있습니다.

[사용 방법]

1. 사용할 프로젝트 파일에 링크 추가

 1) stdc++.h를 다운 받습니다

 2) bits 폴더를 만들어 해당 헤더파일을 넣어줍니다.

 3) Visual Studio에 들어가서, 프로젝트 속성페이지 -> C/C++ -> 일반 -> 추가포함 디렉토리 여기에 bits폴더가 있는 경로를 입력합니다.(bits폴더를 포함하는 상위경로 - 예를들어 desktop폴더-bits폴더-stdc++.h 로 되어있으면, desktop 폴더의 경로를 입력)

 

2. Visual Studio에 추가.

 1) stdc++.h를 다운 받습니다

 2) bits 폴더를 만들어 해당 헤더파일을 넣어줍니다.

 3) Visual Studio가 설치된 폴더 -> VC 폴더 -> include 폴더

   - 제가 사용하는 VS2019 기준으로는 

      "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include"

     경로에 해당 폴더가 존재합니다.

 4) include 폴더 내부에 bits 폴더를 복사해 넣어줍니다.

 

 

stdc++.h
0.00MB

 

 

728x90
반응형

'알고리즘 > 알고리즘 이론' 카테고리의 다른 글

Union-Find  (0) 2020.07.01
그래프 순회(Graph Traversal) - BFS , DFS  (0) 2020.07.01
반복과 재귀  (0) 2020.06.30
코딩 테스트 입문 (with C++)  (0) 2020.06.11
알고리즘 Orientation  (0) 2020.06.10