목록분류 전체보기 (68)
개인공부용123 프로그래밍 블로그
어렵게 생각하지않고 손으로 계산하듯이 풀면 풀립니다 이때 nCr = nCn-r 이 될수있음을 이용해서 n-r > n >> k; if (n == 0 && k == 0) break; if (n - k < k) k = n - k; ll Answer = 1; for (ll i = 1; i
해당문제는 이항계수문제로 n과 k가주어졌을경우 nCk % 10007을 한 결과를 구하는 문제입니다. nCk = n-1Ck-1 + n-1Ck로 나타낼수있습니다. 이를 DP를 이용해서 풀면 cache[1001][1001] 배열에 nCk의 값을 저장해두고 해당 값이 필요할경우 배열에 있는 값을 이용하면 문제를 더욱빠르게 풀수있습니다. #include #include using namespace std; //이항계수 // 점화식 nCk = n-1Ck-1 + n-1Ck typedef long long ll; const ll divideNum = 10007; ll cache[1001][1001]; ll Answer(int N, int K) { if (N == K || K == 0) return 1; ll& ret ..
이 문제는 입력이 약간 까다로운 문제인것같습니다. 입력을 deque에 입력한 후에는 chk라는 flag를 두어서 true이면 앞에서 연산을하고 false이면 뒤에서 연산을 하는 방식으로 해결했고 출력시 chk변수를 확인해서 true이면 앞에서 출력 false이면 뒤에서 출력해서 결과를 냈습니다. 주의해야할 점은 입력이 0일경우 주의해서 풀면 될것같습니다. (입력이 0일경우 D함수가 포함되있지않다면 출력은 []가 나와야합니다.) #include #include #include using namespace std; int main() { std::ios::sync_with_stdio(false); bool chk; // true이면 앞에서 false이면 뒤에서 bool ok; int C, n; cin >> ..
환형큐를 이용해서 문제 M 번째에 있는 수를 찾으면 쉽게 풀리는 문제입니다. #include #include using namespace std; void Josepus(int N, int M) { queue q; for (int i = 1; i M; Josepus(N, M); return 0; }
기본적인 DFS BFS 구현입니다. #include #include #include using namespace std; bool arr[1001][1001]; // 2차원 배열 bool check_arr[1001]; int N, M, V; // 정점 간선 시작점 void BFS(int start) { // BFS호출순서 queue q; q.push(start); check_arr[start] = true; cout v1 >> v2; arr[v1][v2] = true; arr[v2][v1] = true; } DFS(V); cout
현재 VR 과 안드로이드를 결합한 교육용 장애체험 시뮬레이터 프로젝트를 진행중에 있습니다. 해당 프로젝트에서 안드로이드 파트를 맡게되었는데 지금까지 진행한 사항은 구글로그인후 게시글 작성입니다. *익명으로 로그인했을경우 게시글 작성버튼이 안나오게 처리하였습니다. 진행 과정에 대한 사진입니다. 현재 아무런 디자인이 되있지않은 상태이고 기능 만 구현해놓은 상태입니다.추후에 데이터 삭제, 수정을 만들고 각 글당 댓글 기능을 만들 생각입니다.
스택을 쓸수도있는 문제이지만 배열을 써서 쉽게풀리므로 배열로 풀었습니다. String으로 문자를 입력받은후 문자열을 각각확인해서 '('이면 +1 , ')' 이면 -1을 chk변수에 취합니다. 이 과정을 반복하는중에 chk가 0보다작게되면 괄호문자열이 아니므로 바로 빠져나가서 NO를 출력합니다 만약 끝까지 반복했을때 chk변수가 0일경우 정상적인 괄호이므로 YES를 출력합니다. #include #include using namespace std; int main() { std::ios::sync_with_stdio(false); string str; int chk; int C; cin >> C; while (C--) { chk = 0; str = ""; cin >> str; for (int i = 0; i..
제목에서 아시다시피 스택수열입니다.. 그렇습니다 스택을 사용해서 풀어보겠습니다. 이 문제는 인풋으로주어진 수열을 스택의 push, pop연산을 이용해서 표현할수있는가를 묻는 문제입니다. 이문제의 포인트는 현재 스택의 top값이 만들려는 수열의 값보다 크면 안된다는것입니다. 왜냐하면 스택의 입력은 1부터 차례대로 주어지게됩니다. 그리고 스택의 특성인 FILO(후입 선출)의 특성상 이후 스택에 들어올수있는 값은 적어도 스택의 top보다 크기때문입니다. 아래는 해당 소스 코드입니다. #include #include #include using namespace std; int main() { std::ios::sync_with_stdio(false); stack st; string str; int K; int ..
소수찾기문제는 유명한 알고리즘인 에라토스테네스의 체를 이용하면 쉽게풀수있습니다. 에라토스테네스의 체의 최악 수행시간은 O(N*log(logN))이라고합니다. #include #include using namespace std; int main() { // 에라토스테네스의 체를 이용한 소수 구하기 std::ios::sync_with_stdio(false); int M, N; // M > M >> N; bool* arr = new bool[N + 1]; for (int i = 2; i
SQLite(내장데이터베이스), Grid View, ViewPager를 이용한 달력메모장입니다. Grid View를 이용해서 달력틀을 만들고 달력을 넘길때마다 동적으로 해당달과 이전달 다음달에 대한 뷰를 ViewPager에 넣어주는 예제입니다. 공휴일에 대한 데이터는 들어있지않습니다. 이후 추가사항으로는 데이터베이스 백업, 불러오기, 서비스 끄기, 켜기 등을 구현해볼 생각입니다. 소스코드는 추후에 github에 올릴생각입니다.