일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 비트마스크
- 평창동계올림픽
- 다이나믹 프로그래밍
- BFS
- upper_bound
- Segment Tree
- yolo
- 다음 지도 api
- 인간이 그리는 무늬
- 언어의 온도
- 성화봉송
- 그리디 알고리즘
- lower_bound
- 이분탐색
- 안드로이드 스튜디오
- 백트레킹
- BOJ 2098
- boj
- 삼성 코딩테스트
- 영어회화 100일의 기적
- 성화봉송주자
- 위상정렬
- 생활코딩
- 창훈쓰다
- 다음 API
- DP
- MST
- 외판원 순회
- 캘리그라피
- multiset
- Today
- Total
목록코딩 (164)
Hoon222y
next_perutaion 의 경우에는 vector 내에서 순열적인 결과를 얻기위해 사용하는 방법이다. 예를들어 vecotr내에 1 2 3 이라고 저장이 되있었다면 next_permutation을 통해 1 3 2, 2 1 3, 2 3 1, 3 1 2, 3 2 1 이런 결과를 얻을 수 있는것이다. 그럼 간단한 소스코드를 보도록 하자. do while문 안에 하고싶은 연산을 넣어주고 while문에서 범위를 지정해주는 형식이다. 여기서 주의해야할 점은 바로바로 next_permutation 을 사용하기 위해서는 백터내에 숫자들이 정렬이 되어있어야 한다는 점이다. 그런데 사용하다보니 궁금한점이 있는데 해결이 안된다 .. 처음에 for 문안에 0을 안넣고 1을 넣으니까 오류가 생긴다 .. 왤까 .... xcode..
1. Vector의 자료구조와 특징 번호와 번호에 대응하는 데이터로 이루어진 자료구조로 배열과 유사하다, 배열의 크기는 고정이지만, vector의 크기는 동적으로 변한다는 차이점을 가진다. - 중간에 데이터 삽입, 삭제가 용이하지 않다. - 데이터를 순차적으로 저장한다. (검색 속도가 느리다, 랜덤 접근이 용이하다) 2. Vector를 사용해야 하는 경우 - 중간의 데이터 삽입이나 삭제가 없을 경우 - 순차적으로 저장된 데이터를 빈번하게 검색하지 않을 경우 - 특정 데이터가 저장된 위치를 파악하여 랜덤 접근 할 경우 - 순차접근은 list, vector 모두 유리하지 않고 (map, set이 유리) - 랜덤접근을 사용할 경우 list 보다 vector를 사용하는게 유리하다. - 데이터 중간에 삽입, 삭제..
문제해결기법 수업 동맹(Alliance)문제이다.주어진 문제를 풀기위해 진짜 .... 20시간정도를 투자하였는데 ..... 결국 못풀고 어쩌다보니 Union-Find 자료구조를 알게 되었다.자세한 참고는 이곳을 통하여 배우게 되엇다. (http://blog.secmem.org/521) 일단 나의 방식으로 설명하자면 트리의 구조이다.다른 트리와 다른점이 있다면 트리간의 연결성, 즉 같은 그룹안에 속해있는지 아닌지를 판별하는데 아주 좋은 자료구조라고 볼 수 있다.Union_Find 자료구조를 구성하기 위한 기본 3가지 함수이다.init 함수는 맨처음 자기자신을 head로 하는 n개의 트리를 각각 만드는 것이다.find함수는 각각의 그룹이 어떤 그룹에 속해 있는지 head를 반환해주는 함수이다.unite함수는..
소풍을 가는데 싸우지 않기위해 친구끼리만 짝지어줄 수 있는 방법의 수를 출력하는 문제였다 . 내가 고민했던 방법은 2 가지였다. 1) 각각의 짝들을 하나의 수로 바꾸어 배열에 저장한 후 재귀적으로 반복하면서 겹치는 숫자가 없게하는 방법 . - 설명이 애매하네 .. 나중에 파일 찾아볼 것. 그런데 구현하는 과정에 for문을 학생수 만큼 반복해야하는데 그걸 동적으로 구현하지 못하여 포기2) 책에나온것처럼 재귀적으로 확인 - 결국 이걸로 풀긴 했는데 문제가 애매하다 .... 내가 짠 코드에서는 예제가 하나 틀리게 나오는데 정답처리가 되버렸다 ... 일단 내가 작성한 코드를 분석해보도록 하자.재귀함수 부분만 보도록 하자. 나머지 부분은 그냥 횟수에 관한 코드이므로 .....일단 전역변수로 학생의 1차원배열, 학..
3.1 코드의 중요성을 간과하지 마라.프로그래밍 대회에서 좋은 성적을 올리기 위한 비결은 당장 빨리 코드를 작성하는 것보다 읽기쉬운 코드를 작성하는 것이다.- 복잡하고 읽기 어려운 코드는 디버깅도 어렵고, 한번에 정확하게 작성하기도 어렵기 때문에 ...- 반복적인 연습을 통하여 내 코드 스타일을 간결하고 일관되게 짜야한다. 3.2 좋은 코드를 짜기위한 원칙간결한 코드를 작성하기적극적으로 코드를 재사용하기- 같은 코드가 세번이상 등장한다면 항상 해당 코드를 함수로 분리해 재사용 한다는 원칙을 만들면 좋다.표준 라이브러리 공부하기 - 적어도 언어의 문자열, 동적배열, 스택, 큐 리스트, 사전등의 자료구조 그리고 정렬등의 표준적인 알고리즘 구현 사용법을 알아두자.항상 같은 형태로 프로그램을 작성하기일관적이고 ..
내려가면서 최대합이 되도록 구하는 문제이다. 이 문제를 처음 접근할 때 모든 경우에 대해서 완전 탐색을 하게 되면 당연히 되지만 그렇게 되면 시간이 너무 오래 걸린다는 문제가 있다.그래서 이러한 문제를 접근할 때는 아래서부터 합을 하는 방식으로 접근을 하였다.위 코드 처럼 짰는데 [3][3] = [3][3] + 대수비교([4][3],[4][4]) 를하여 [0][0]까지 구한뒤 [0][0]값을 출력하면 되었다. 그리고 다른사람들의 코드를 읽어보려고 하였으나 .... 왠지 이해가 안된다 ㅋㅋㅋㅋ define의 정의과 뭐 이런걸 몰라서 그런가 ...암튼 완료
2차원 배열 동적할당을 해야하는 문제이다. 배열의 합을 구하는 for 문에서 뻘짓을 했다 ..;; ㅋㅋㅋ이 문제를 풀면서 정리하게된 2가지 개념은 바로 2차원배열 동적할당과, memset() 사용법이다. 먼저 2차원 배열 동적할당에 대해 정리해보자.코드 옆에 주석을 달아두었으니 읽어보면 이해가 될것이다. 유의해야할 점은 2차원 동적할당 해제하는 순서를 신경써야 할 것 이다. 다음은 memset()함수이다.함수에서 mem-라고 시작되는것은 메모리와 관련있다고 한다. ex)memcpy-메모리 카피함수memset함수를 사용하기 위해 일단 #include 를 선언해주고 사용해야 하며,memset(초기화 메모리 공간의 시작주소,초기화 하고싶은 값, 설정한 데이터의 사이즈) 이런식으로 초기화 해주면 된다.memse..
소숫점 9자리로 고정하는 문제이다.소숫점 고정하기 위해 (precision 을 사용하기 위해) #include 을 해주고 fixed를 같이 써주어야 9자리까지 고정이 된다. 참고할것!
처음에 이 문제를 접근할 때는 그냥 a^b을 10으로 나눈 나머지를 배열에 넣고 출력해야지 했는데 7^635 등의 범위를 넣을수 있는 변수크기가 없다는걸 알게 되었다. 이 문제의 포인트는 위의 코드처럼 a^b을 담으려 할필요 없이 그냥 각각 한번식 연산을 할 때마다 마지막 자리수만 보관을 하면된다.aPb = (aPb*a) %10; 이런식으로....
이번에는 가장 많이 사용하는 프로그래밍 방법이며, 효율적인 객체지향 프로그래밍에 대해 알아보자이번시간에는 개념 정의 위주로 설명이 될 것 이다.객체지향 프로그래밍을 하면서 가장 많이 사용되는 용어인 객체와 클래스를 알아보자면 , 클래스와 객체는 붕어빵과 붕어빵 틀과 같은 관계이다.클래스는 구조체와 문법적인 관계가 비슷하나 함수까지도 맴버로 넣는다는점이 구조체와 다르다.또한 객체란 클래스를 이용하여 정의된 변수를 객체라고 한다. 이번에는 정보 은익(Data hiding)과 캡슐화에 대해 알아보자.정보은익이란 다른 객체의 내부를 모르게 하는것으로 정보를 숨기는 것이다. 즉 객체간의 연관성을 줄이는 것이다.캡슐화란 약속된 부분을 제외한 나머지 부분을 캡술로 감싸서 숨겨버리는 것으로 이걸 이용하여 정보은익을 할..