본문 바로가기

분류 전체보기114

[STL] pair 사용하기 pair 사용하기 좌표와 같이 x,y 로 쌍으로 이루어져서 표현해야하는 경우가 많다. 이미 STL에서 쌍으로 되는 데이터를 편하게 사용하게 pair라는 것을 제공해준다. pair는 두 자료형을 묶을 수 있다. 그 특징을 보자면1. #include 에 존재한다.2. 두 자료형을 묶을 수 있다.3. 첫번째를 자료형에 접근하기 위해서 first, 두번째 자료형에 접근하기 위해서 second로 접근이 가능하다.4. make_pair(a,b) 를 이용하거나 생성자를 이용하여서 만들 수 있다.5. pair안에 pair가 들어갈 수 있다. 위의 그림과 같은 느낌이다. 코드 예 pair에 pair 가 들어간 경우는 예를들어 pair a 로 정의하면 a.first.first, a.first.second 이런식으로 접근 .. 2016. 4. 4.
[조합] nCr 쉽게 구하기. (수정 20190604) nCr 쉽게 구하기 (수정 20190604) 오랫만에 와서 살펴보니 코드와 예시를 든 이미지가 잘못되서 수정하였습니다 ㅜㅡㅜ nCr 같은 경우는 n개의 숫자에서 r개를 뽑는 경우의 수이다. 경우의 수를 구하는 경우에서 많이 사용한다. nCr의 수식은 아래와 같다. 즉 매번 이 수식을 사용한다는 것은 n! , r!, (n-r)! 를 사용해야 한다. 즉 여기서 말하고자 하는 것은 이 것을 매번 사용할때마다 구하지 않고 미리 다 구해놓아서 그 숫자를 사용하는 것이다. 이것을 1개를 뽑는것 부터 n개를 뽑는 것 까지의 조합을 쭈욱 정리하다 보면 숫자의 특성이 나올 것이다. 위의 것에서 보면 1개에서 뽑는 경우의 수에서 6개의 경우수를 뽑는 것을 쭈욱 나열 한 건데 여기서 숫자가 어떻게 나오는 지에 대한 일정 패.. 2016. 4. 3.
[그래프의 표현] 인접 리스트 인접 리스트 그래프를 표현하는 방법중의 한가지 방법이다. 즉 링크드 리스트 ( 벡터) 를 사용한 배열로 그래프를 표현해 주는 방법이다. 인접 행렬과 달리 간선의 개수로만 검색하는것이 줄어들기 때문에 검색 속도가 빠르다. 즉 아래의 그래프를 표현해 준다면 다음과 같다. 어찌보면 인접 행렬이랑 뭐가 다르냐??? 라고 물어볼 수 있는데 그건 탐색의 시간에서 큰 차이를 보인다. 인접행렬의 같은경우는 접점의 개수 x 접점의 개수의 맵을 전부 탐색해야 되지만 인접 리스트는 간선의 개수만 탐색 해도 되기 때문에 차이가 난다. 왼쪽의 그림이 인접 행렬이고, 오른쪽은 인접 리스트인데 속도 면에서도 횟수의 차이가 명백히 나는 것을 볼 수 있다. 코드 구현 인접 리스트를 만드는 코드 구현 같은 경우는 매우 짧고 쉽게 만들 .. 2016. 4. 1.
[그래프의 표현] 인접 행렬 인접행렬 그래프의 간선과 접점의 관계를 행렬(2차원 배열)로 표현하는 방식이다. 위의 그래프의 정점은 1,2,3,4,5,6 총 6개가 있고 연결된 간선은 1 - 2 , 1 - 5, 2 - 3 , 2 - 4, 2 - 5, 3 - 4, 4 -5 , 4- 6 으로 총 간선이 8개있다. 이 그래프를 인접행렬로 표현하자면 총 정점의 개수인 6인 6 x 6 행렬을 만들고 간선이 연결된 곳에 숫자를 집어넣는 것이다. 예를들어 행렬을 D[x][y] 라 하면 1 - 2 가 연결된 간선을 표현하기 위해서 D[1][2] = D[2][1] = 1을 넣어주어서 간선을 표시한다. 만약 간선의 가중치 가 있다면 1 대신에 가중치값을 넣어주면된다. 그래서 나온 행렬은 아래와같다. 이제 이 인접행렬을 어떻게 사용하는지에 대한 예시를 .. 2016. 3. 31.
[백준][1073번][DP] 도미노 도미노 https://www.acmicpc.net/problem/107312345678910111213141516171819202122232425262728293031323334#include int map[11][11];int numbers[10]; int main(void){ int number; int d[10] = { 1, 0, 1, 0, 3, 0, 15, 0, 105, 0 }; scanf("%d", &number); for (int i = 0; i 2016. 3. 30.
[백준][2092번][DP] 집합의 개수 집합의 개수 https://www.acmicpc.net/problem/2092123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include int dp[210][4010];int numbers[210]; int main(void){ int T, A, S, B; int total = 0; scanf("%d %d %d %d", &T, &A, &S, &B); dp[0][0] = 1; for (int i = 0; i 2016. 3. 30.
728x90