일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- BOJ
- 리듬게임
- c++ heap
- 프로그래밍
- C++ gui 라이브러리
- gui
- Nebula
- 자료구조
- go channel
- vim-go
- C++ library
- 코딩
- LOB
- JUCE 튜토리얼
- 공룡책
- C++
- 알고리즘
- 연결리스트
- Docker
- C언어
- go
- JUCE라이브러리
- C++ gui
- JUCE
- OS
- a tour of go
- tour of go
- 운영체제
- JUCE library
- Today
- Total
목록BOJ (11)
CafeM0ca
2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 주석을 지우고 실행해보자. #include #include #include #include #define WHITE_TILE 0 #define BLUE_TILE 1 using namespace std; void print(const vector &v) { for(const auto& i : v) { for (const auto& j : i) { cout
문제인식 문제링크 생활속에서 이러한 유형을 자주 접할 수 있다. 최저가를 찾는 문제다. (0) 가장 싼 패키지와 가장 싼 낱개의 가격을 찾는다. 낱개 6개 == 패키지 1개이므로, (1) 가격이 낱개 6개가 = 6이고, 패키지 > n >..
문제 해결 과정 자료구조 힙을 구현하여 insert와 remove 함수를 작성하여 해결한다. 문제의 제한시간은 1초이다. 따라서 insert 함수와 remove 함수를 O(log N) 시간으로 해결할 수 있도록 구현해야 한다. 시간이 빡빡한 문제이므로 cin.tie와 cin.sync_with_stdio를 꼭 해주자. 그리고 endl 대신 '\n' 으로 개행하자. 구현 #include #include using namespace std; template class max_heap{ public: max_heap(); void insert(type); void remove(int ); void print(); void heapify(int); type operator[](const int); ..
이전 수 정렬하기 문제에서 배열을 string으로 수정했다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546/*삽입 정렬1.데이터가 있다. 데이터는 두 개 이상이다.2.두번째 요소부터 마지막 요소까지 돈다.3.n번째 요소는 n부터 1까지 돈다.4.만약 n번째 요소가 n-1번째 요소보다 크면 그만 돈다.5.삽입으로 인해 요소들이 밀린다.*/#include #include using namespace std; inline void ShowArray(const string& s,int); void InsertSort(string& s, int len){ for(int i=1;i0;j--) //j는 i-1번째 ..
이전에 삽입정렬 구현해둔것으로 풀었다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/*삽입 정렬1.데이터가 있다. 데이터는 두 개 이상이다.2.두번째 요소부터 마지막 요소까지 돈다.3.n번째 요소는 n부터 1까지 돈다.4.만약 n번째 요소가 n-1번째 요소보다 크면 그만 돈다.5.삽입으로 인해 요소들이 밀린다.*/ #include using namespace std; inline void ShowArray(int arr[],int); void InsertSort(int arr[],int len){ for(int i=1;i0;j--) //j는 i-1번째 원소 { if(arr[j..
std::array써서 저장하는 방식으로 사용하려 했지만 세로부터 1씩 증가하면서 꼭대기층까지 가면 가로를 1증가시키고 다시 세로를 1씩 증가하면서 n번째가 될때가 n번째 손님이니 출력했다. 12345678910111213141516171819202122232425262728#include using namespace std; int main(){ cin.sync_with_stdio(false); cin.tie(NULL); int h,w,n,t; cin >> t; for(int repeat=0;repeat> h >> w >> n; int cnt = 1; for(int i=1;i
대각선으로 증가한다. 대각선 끝을 체크포인트라 두고 왔다갔다하면서 분자,분모가 증가/감소 또는 감소/증가한다.위로 올라갈때는 분모가 증가하고 아래로 내려갈땐 분자가 증가한다. 이를 nutrun이라는 변수를 만들어 올라갈때 내려갈때를 구분해줘서 풀었다. 12345678910111213141516171819202122232425262728293031#include using namespace std;int main(){ int numuerator = 1,denominator = 1,x; // numuerator 분자, denominator 분모 cin.tie(NULL); cin.sync_with_stdio(false); cin >> x; bool nuturn = false; for(int i=1;i
재귀함수로 메모이제이션을 이용했다. 이게 0층4호 부터 3층 4호까지 적어보면 행렬의 모양을 띄우는데 a층 b호 = a층 b-1호 + a-1층 b호다. 모카는 문제에서 제시한 방법대로 풀었다. 람다 처음으로 적용해서 써봤는데 쏠쏠하다. 12345678910111213141516171819202122232425262728293031323334353637#include using namespace std;auto NextFloor(int k,int b){ static int memo[16][16]{0}; if(memo[k][b]) return memo[k][b]; if(k == 0) { memo[k][b] = b; return memo[k][b]; // 내 마음속에 저~장 } else{ return [&](..
지금 문제 열람이 안되는데 문제는 하나의 큰 폭죽이 k개의 중간 폭죽으로 나눠지고, 나눠진 중간폭죽은 폭죽마다 k개의 작은 폭죽으로 또 나눠져 한줌의 재가 된다는 내용이다.이때 전체 폭죽 대,중,소의 개수를 주어지고 k를 구하는 문제였다. 입력으로 21이 주어지면21 = 대+중+소 이다.여기서 대는 항상 1이다.20 = 중+소소는 중의 제곱이다. 편의상 둘다 k라 두자.20 = k + k^2k로 묶으면20 = k(1+k)다. 이것을 코드로 구현하면 되는 단순한 문제다. 123456789101112131415161718192021#include using namespace std; int main(){ cin.tie(NULL); cin.sync_with_stdio(false); int n; cin >> n..
반년만에 문제 풀어본다. 몸풀기로 간단한거부터.. 문제에서 제시하는건 10000이하의 셀프넘버를 찾는거였다.모카는 처음에 생성자를 찾는 방법을 고민하다가 셀프넘버가 d(n) > n 이 항상 성립하므로 1부터 9999까지(9999까지 돌 필요는 없다만..) 돌면서 d(n)이 되는것은 1로 두고 1이 아닌것은 셀프넘버로 봤다. 12345678910111213141516171819#include using namespace std; int main(){ int arr[10001] = {0,0,}; int k; for(int i=1;i0;j*=10){ k += (i % (j*10)) / j; } if(k