분류 전체보기 202

[C++] STL : Vector 사용법과 함수

Vecotr Container란 무엇인가 ? 자동으로 메모리가 할당되는 배열 다양한 자료형을 담을 수 있는 배열 아래와 같은 구조를 가지고 있다. Vector 사용법, 생성방법 #include using namespace std; int main(){ // 비어있는 벡터 생성 vector v; // 기본값 0 으로 초기화된 10개의 원소를 가진 vector 생성 vector v(10); // 2로 초기화된 vector 생성 vector v(10,2); //vector 복사 vector v1(v2); return 0; }Vector 내장 함수 V.assign(5,2) 2의 값으로 5개의 원소 할당 V.at(idx) idx번째 원소를 참조 V[idx] idx번째 원소를 참조 V.front() 첫번 째 원소 ..

[C++] STL이란 무엇인가?

STL이란 무엇인가 ? 표준 C++ 라이브러리를 뜻한다. (Standard Template Library) C++ 언어로 프로그래밍 하는데 필요한 자료구조와 알고리즘을 제공하는 라이브러리 이다. STL의 구성 요소 Container 객체를 저장하는 객체, 자료구조 등으로 클래스 템플릿으로 구현되어 있다. ex) array, vector, list, deque, set, multiset, map, multimap Iterator 포인터와 유사한 개념으로 컨테이너의 원소를 가리키고, 접근한다. 다음 워소를 가리키는 기능, 순회 등을 수행할 수 있다. Algorithm 정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공 Function Object 함수처럼 동작하는 객체 컨테이너와 알고리즘 등에 클..

[알고리즘][Python] 백준 17837 새로운 게임 2 문제 풀이

문제 출처 : www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net 문제 해석 : 체스말이 4개이상 모이거나 1000번을 해도 4개가 모이지 않으면 게임이 끝난다 이때 끝날 때 까지의 시간을 구하는 문제이다. (주어진 조건을 모두 충족하면서) 문제 풀이 : 문제에는 주어지는 조건이 있다. 체스판에 경우에 따라서 모든 경우를 차근차근 생각해서 풀이하면 된다. 풀이 시간 (기록용) : 1시간 32분 풀이 코드 dx = [0, 0, -1, 1] dy = [1, -1..

[알고리즘][Python] 백준 2458 키 순서 문제 풀이

문제 출처 : www.acmicpc.net/problem/2458 2458번: 키 순서 1번부터 N번까지 번호가 붙여져 있는 학생들에 대하여 두 학생끼리 키를 비교한 결과의 일부가 주어져 있다. 단, N명의 학생들의 키는 모두 다르다고 가정한다. 예를 들어, 6명의 학생들에 대하여 www.acmicpc.net 문제 해석 : 키의 대소 비교 결과가 M개 주어졌을 때 N 명의 학생들 가운데 자신의 키 순서를 정확하게 알고있는 사람의 수를 구하는 문제이다. 문제 풀이 : 그래프 탐색을 통해서 자신보다 작은 사람의 수, 자신보다 큰 사람의 수를 알고 있는 만큼 기록한다. 이후에 자신이 알고있는 사람의 키 순서가 N-1일때 그 사람은 자신의 키 순서를 정확하게 알고 있다고 볼 수 있다. 풀이 시간 (기록용) : ..

[자료구조] 1.자료구조란 무엇인가?

자료구조(Data Structure) - 자료구조는 다양한 형태를 가질 수 있는 데이터의 구조를 정의한 것을 뜻한다. - 물리적, 논리적으로 다양한 데이터를 표현할 수 있는 자료의 구조를 정의하고 사용함으로 알고리즘을 구현할 수 있다. 자료구조는 다음과 같이 분류 할 수 있다. 자료 구조는 크게 아래와 같이 분류할 수 있다. 1. 단순구조 - 컴퓨터, 언어에서 기본적으로 제공하는 데이터를 의미한다. 이러한 기본 자료형을 모아서 배열, 구조체, 클래스 등을 선언하여 사용자 정의 자료형을 만들 수도 있다. - 배열 : 동일한 자료형의 모음 - 구조체 : 여러 자료형을 모음 ( JAVA에서는 ArrayList를 제공한다. ) - 클래스 : 구조체의 특징과 메소드(함수)까지 포함하여 인스턴스를 생성할 수 있게 ..

[ETC] 메모리 구조

메모리란 프로그램을 실행하기 전에 데이터를 저장하는 공간으로 메인 메모리 (Main Memory), RAM이라는 물리적인 공간에 Load 됩니다. 이러한 메모리는 프로그램을 실행하는데 있어 동적 할당, 코드, 변수 등을 저장해야하고 운영체제는 프로그램의 실행을 위해 아래와 같은 공간을 제공합니다. 1. 코드(Code) 영역 2. 데이터(Data) 영역 3. 스택(Stack) 영역 4. 힙(Heap) 영역 이러한 영역들은 다음과 같이 표현 된다. 1. 코드(Code) 영역 -> 코드(Code) 영역은 실행할 프로그램의 코드, -> 즉 Text로 이루어진 공간입니다. 이러한 코드는 CPU에 의해서 처리됩니다. 2. 데이터(Data) 영역 -> 데이터 영역에는 전역 변수, 정적 변수가 저장됩니다. -> 데이터..

[알고리즘][Python] 백준 14499 주사위 굴리기 문제 풀이

문제 출처 : www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 문제 해석 : 주사위를 굴리면서 바닥에 숫자가 있으면 복사하고, 없다면 주사위의 숫자를 바닥에 복사한다. 이렇게 명령을 진행할 때 마다 주사위 윗면의 수를 출력하는 문제이다. 문제 풀이 : 문제의 조건을 주의하면서 작성한다. 이때 주사위를 굴리는 경우에 따라서 변화하는 방향을 유의하면서 변경해주면 풀이할 수 있다. 풀이 시간 (기록..

[알고리즘][Python] 백준 1110 더하기 사이클 문제 풀이

문제 출처 : www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제 해석 : 더하기 사이클을 처리하는 알고리즘을 따라 했을 때 원래 수가 다시 나오는데 얼마나 걸리는지 구하는 문제이다. 문제 풀이 : 주어진 조건을 차근차근 구현하면 풀이 할 수 있다. 여기서 주의해서 구현해야 할 부분은 입력값이 10보다 작은 경우에는 자기 자신을 아닌 경우에는 각 자릿수의 합을 가지고 연산을 이어 간다는 점이다. 풀이 시간 (기록용) : 12분 풀이 코드 N ..

[알고리즘][Python] 백준 2166 다각형의 면적 문제 풀이

문제 출처 : www.acmicpc.net/problem/2166 2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net 문제 해석 : 다각형의 넓이를 구하는 문제이다. 문제 풀이 : 신발끈 공식을 활용해서 풀이할 수 있다. 풀이 시간 (기록용) : 40분 12초 풀이 코드 from collections import deque import math def ccw(x1, y1, x2, y2, x3, y3): return (x1 * y2 + x2 * y3 + x3 * y1) - (y1 * x2 + y2 * x3 + y3 * x1) N = int(..

[알고리즘][Python] 백준 2143 두 배열의 합 문제 풀이

문제 출처 : www.acmicpc.net/problem/2143 2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1≤m≤1,000)이 주어지고, 그 다 www.acmicpc.net 문제 해석 : 두 배열에 있는 부분 배열의 합이 T를 만족하느 갯수를 찾는 문제이다. 문제 풀이 : 배열의 부분합을 저장한 딕셔너리 자료형을 탐색하여 갯수를 카운트하면 된다. 풀이 시간 (기록용) : 35분 12초 풀이 코드 import sys from collections import defaultdict input =..