728x90
반응형
SMALL

C++ 15

[C++] 스마트 포인터

스마트 포인터에 대한 정리RAII(Resource acquisition is initialization) 패턴객체가 쓰이는 Scope를 벗어나면 Resource를 해제해주는 기법bool error() {    return true;}void fnc() {    int* c = new int[100];    if (error()) return;    delete[] c;}int main(void) {    fnc();    _CrtDumpMemoryLeaks();        return 0;}Detected memory leaks! Dumping objects -> {156} normal block at 0x00C60C58, 400 bytes long. Data: CD CD CD CD CD CD CD ..

Language/C++ 2023.09.25

[C++] OOP 특징

OOP 특징 및 핵심 개념에 대한 정리OOP(Object Oriented Programming)객체지향 프로그래밍필요한 데이터를 추상화하여 속성과 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 캡슐화(Encapsulation)객체의 속성과 행위를 하나로 묶고 구현 코드를 외부에 감춰 은닉하는 것데이터 번들링(Data bundling) - 변수와 함수를 하나의 단위로 묶는 것멤버 변수 + 멤버 함수 + 접근지정자를 =  클래스로 캡슐화 지원정보 은닉(Information hiding) - 클래스 내부 구현을 외부로 드러나지 않도록 감춤추상화(Abstraction)중요하고 필요한 정보만 표현하기 위해 객체의 공통적 속성과 행위를 하나로 묶는 것 상속(In..

Language/C++ 2023.09.18

[Programmers] 단어 변환

프로그래머스 단어 변환 C++ 풀이 정리단어 변환문제 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다.1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다.2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다.두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과..

Algorithm 2023.09.04

[Linux] gcc, g++ 컴파일

리눅스환경에서 c, cpp 소스 코드를 컴파일 하는 방법 gcc, g++ 설치 $sudo apt-get update $sudo apt-get install gcc $sudo apt-get install g++ 컴파일 환경 ubuntu 18.04 gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 c 소스 코드 컴파일 명령어 gcc [파일명].c -o [출력할 파일 명] gcc client.c -o hClient c++ 소스 코드 컴파일 명령어 g++ [파일명].cpp -o [출력할 파일 명] g++ client.cpp -o hClient -lstdc++ 옵션을 붙일 경우 gcc로 c++ 소스 코드 컴파일 가능 gc..

OS/Linux 2023.08.30

[BAEKJOON] 11724 연결 요소의 개수

백준 11724 연결 요소의 개수 C++ 풀이 정리 11724 연결 요소의 개수 문제 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다. 입력 6 5 1 2 2 5 5 1 3 4 4 6 첫째 줄에 연결 요소의 개수를 출력한다. 출력 2 풀이 방향이 없는 그래프라는 점을 고려해 입력 받고 DFS나 BFS중 한가지를 선택하여 풀면 됨 모든 노드에 대해서 탐색을 수행해야하고, 한개의 노드마..

Algorithm 2023.08.24

[BAEKJOON] 3190 뱀

백준 3190 뱀 풀이 정리 3190 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 벽이나 자기자신의 몸과 부딪히면 게임이 끝난다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한..

Algorithm 2023.08.17

[C++] STL String 사용법 및 예제

C++ STL중 하나인 String 사용법에 대한 정리(+예제) String C++ 표준 라이브러리(Standard Template Library)로 string(문자열)을 다루는 클래스 C언어의 char*, char[] 처럼 문자열 끝에 '\0' 이 없음 문자열 길이 동적으로 변경 가능 String 선언 #include string s; // 빈 문자열 s 생성 string s = "hello"; // hello로 초기화된 s 생성 String 멤버함수 원소 접근 s[i]; // s의 i번째 원소 참조 s.at[i]; // s의 i번째 원소 참조 (유효 범휘 체크 O) s.front(); // s의 첫번째 원소 참조 s.back(); // s의 마지막 원소 참조 삽입/삭제 string s // s.pu..

Language/C++ 2023.08.15

[BAEKJOON] 18406 럭키 스트레이트

백준 18406 럭키 스트레이트 풀이 정리 18406 럭키 스트레이트 문제 어떤 게임의 아웃복서 캐릭터에게는 럭키 스트레이트라는 기술이 존재한다. 이 기술은 매우 강력한 대신에 항상 사용할 수는 없으며, 현재 게임 내에서 점수가 특정 조건을 만족할 때만 사용할 수 있다. 특정 조건이란 현재 캐릭터의 점수를 N이라고 할 때 점수 N을 자릿수를 기준으로 반으로 나누어 왼쪽 부분의 각 자릿수의 합과 오른쪽 부분의 각 자릿수의 합을 더한 값이 동일한 상황을 의미한다. 예를 들어 현재 점수가 123,402라면 왼쪽 부분의 각 자릿수의 합은 1+2+3, 오른쪽 부분의 각 자릿수의 합은 4+0+2이므로 두 합이 6으로 동일하여 럭키 스트레이트를 사용할 수 있다. 현재 점수 N이 주어졌을 때, 럭키 스트레이트를 사용할..

Algorithm 2023.08.14

[BAEKJOON] 1439 뒤집기

백준 1439 뒤집기 풀이 정리 1439 뒤집기 문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 ..

Algorithm 2023.08.14

[BAEKJOON] 7576 토마토

백준 7576 토마토 풀이 정리 7576 토마토 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 ..

Algorithm 2023.08.10
728x90
반응형
LIST