일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 팩터리 패턴
- 데커레이터
- 프로토타입 중복처리
- 추상 팩터리
- 프로토타입 패턴
- 팩터리 메서드
- 데커레이터 패턴
- 컴포지트 패턴
- 단순한 빌더
- 동적 데코레이터
- 그루비 스타일 빌더
- 내부 팩터리
- 싱글턴 패턴
- 함수형 팩터리
- 디자인패턴
- 흐름식 빌더
- 디자인 패턴
- 프로토타입
- 브릿지
- 싱글톤 패턴
- 싱글톤
- 컴포지트
- 브릿지 패턴
- 모던C++디자인패턴
- 빌더 패턴
- 동적 데커레이터
- 싱글턴
- 빌더
- 팩터리
- 컴포지트 빌더
- Today
- Total
목록분류 전체보기 (65)
GGym's Practice Notes
큐와 우선순위 큐를 사용했다. 우선순위가 9~1까지 밖에 없는 걸 생각해 9~1 순으로 우선순위 큐에서 나온 갯수만큼 저장하고 큐를 돌면서 출력하도록 하였다. 그리고 역시나 백준에 좀더 어려운 버전의 똑같은 문제가 존재했다.. [BOJ 1966 프린터 큐] : www.acmicpc.net/problem/1966 1966번: 프린터 큐 첫 줄에 test case의 수가 주어진다. 각 test case에 대해서 문서의 수 N(100이하)와 몇 번째로 인쇄되었는지 궁금한 문서가 현재 Queue의 어떤 위치에 있는지를 알려주는 M(0이상 N미만)이 주어진다. 다음 www.acmicpc.net 3년전에 문제를 풀어서 어떻게 풀었는지는 기억나지 않지만 queue 자료구조를 사용하지 않고 구현했었다. 프로그래머스 코..
프로그래머스는 앞에서 부터 범위 내 가장 큰 값을 저장하여 앞에서 부터 추가하는 코드로 하면 잘 통과 되지만.. 백준에도 똑같은 문제가 있다. [BOJ 2812 크게만들기] : www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 백준에 똑같이 적용하면 시간초과를 뱉는다. 백준은 스택을 이용하여 작은수가 나오면 스택에 저장하고 큰 수가 나오면 스택을 큰게 나올때 까지 pop해준다. pop해준 갯수를 기록하고 pop해준 갯수가 K를 넘으면 빠져나오는 풀이를 적용하였다. 프로그래머스 큰 수 만들기 코드 : #include // Level2_ 큰..
DFS 문제다. 처음에 pass를 사용한 이유는 원래 정렬을 하고 돌려서 그렇다.. tickets에 맞춰서 다시 바꿔야 되서 안바꿨다. 그리고 경로를 다 구하고 나서 sort를 사용하여 가장 알파벳이 앞서는 것을 찾았다. 시간내에 풀기위해서 빨리 끝내기 위해 다른 좋은 방법이 있는데도 불구하고 이 방법을 썼는데 만족스럽지 않다. 반드시 ICN을 시작으로 잡고 하길 바란다. 정렬 후에 1번째 인덱스부터 돌리면 1,2번 테스트 케이스에서 오류를 뱉는다. #include // Level3_ 여행경로 [DFS] #include #include #include using namespace std; bool visited[100001]; vector path; bool cmp(const vector& a, cons..
처음에 백트래킹 썼다가 시간초과나서 규칙 찾고 하느랴 시간 다버렸다. 팩토리얼을 이용한다. idx = k / fact [n-i]; 위 식을 이용하면 각 위치가 몇번째인지 알 수 있다. 그리고 몇번째인지 안다고해서 다되는것이 아니라 앞에서 나온 수는 거르고 그 다음 것을 선택해야 된다. 이 부분은 계속 시간초과나고 도저히 모르겠어서 다른사람 답을 살짝보고(...) 벡터를 사용했다. #include // Level3_ 줄 서는 방법 [수학] [구현] #include #include #include using namespace std; long long fact[21] = {1, }; vector solution(int n, long long k) { vector answer; vector v; for(int..
b, y 가 brown의 개수와 yellow의 개수를 찾는 식이다. 식을 찾고나서 귀찮아가지고 이분탐색처럼 해버림.. 저 식을 이용한 더 좋은 방법이 있을 듯? #include // Level2_ 카펫 [완전탐색] #include #include using namespace std; vector solution(int brown, int yellow) { vector answer; int sum = brown + yellow; int l=3, r=sum/3, m_l, m_r; while(l > brown >> yellow; solution(brown, yellow); return 0; }
조건을 잘봐야 되는 문제입니다. STL중 map을 활용하여 장르마다 분류를 하고 장르별 재생횟수를 정렬 후 Vector를 이용하여 곡마다 정렬하였습니다. #include #include #include #include #include using namespace std; struct genre{ genre(int _idx, int _plays){ plays.push_back(make_pair(_idx, _plays)); sumPlays = _plays; } vector plays; int sumPlays = 0; }; bool cmp(const pair& a, const pair& b){ return a.second.sumPlays > b.second.sumPlays; } bool cmp_genre(co..