728x90

분류 전체보기 360

[BAEKJOON][C++][시뮬레이션] 16236번 아기상어

문제 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이 이 문제를 풀 때 중요한 점은, 물고기를 한마리 먹을 때 마다 그리고 물고기 크기가 늘었을 때 마다 먹을 수 있는 물고기를 재탐색해야 한다는 것이다. 물고기를 한 마리 먹었으면, 그자리로 이동해서 다시 가장 가까운 && 가장 위에 있는 && 가장 안쪽에 있는 물고기를 다시 찾아야하기 때문이다. 그리고 물고기 크기가 늘었다면, 먹을 수 있는 물고기가 늘어날 것이기 때문이다. 물고기를 탐색하는 부분은, 가장 가까운 물고기가 최우선이므로 최단거리 찾기..

[C++][프로그래머스][Heap] 더 맵게

[문제] 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 스코빌 지수가 가장 낮은 두가지 음식을 섞어서 모든 음식이 K이상의 스코빌 지수를 가지게 하려 할 때 필요한 최소 연산 횟수를 구하는 것. [풀이] 처음엔 걍 STL algorithm의 sort() 함수로 scoville 벡터를 내림차순 정렬하고 scoville 벡터의 가장 작은 값과 두번째로 작은 값을 K보다 커질 때까지 연산하는 과정을 반복했다. 결과는 효율성 테스트 0점. #include #include using namespace s..

[C++][STL][자료구조] 힙(Heap), 우선순위 큐(Priority queue) (feat. stack, queue, deque)

* Heap(힙) : 최대값/최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 형태의 자료구조 (완전 이진 트리: 마지막 레벨을 제외한 모든 레벨의 node가 완전히 채워져 있고, 마지막 레벨의 node들은 가능한 한 왼쪽부터 채워져 있는 구조) : 삽입/삭제/최대값 찾기/최소값 찾기에 걸리는 시간복잡도 O(logN) : root가 최대 값을 갖는 최대 힙(Max Heap)과 root가 최소 값을 갖는 최소 힙(Min Heap)이 있음 : 값이 '왼쪽 자식 < 부모 < 오른쪽 자식' 순으로 크기가 큰 이진 탐색 트리(Binary Search Tree)와 달리 '자식 < 부모' 형태의 값 크기만 유지됨. : Heap 자료구조를 응용한 대표적인 예) Priority q..

[C++][BAEKJOON][브루트포스] 3085번 사탕 게임

[문제] 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net [문제설명] 인접한 두 칸을 골라서 사탕을 교환한 후, 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 찾는 문제이다. [문제풀이] 이 문제의 함정은 서로 다른 색깔의 인접한 두 칸이 아닌 걍 인접한 두 칸이라는 점인 것 같다. PPPP 처럼 교환하지 않을 때 가장 긴 연속 부분을 가질 수도 있기 때문이다. 나는 인접한 두 칸을 선택하기 위해 int dir[2][2] = { {0,1},{1,0} } 오른쪽과 아래에 해당하는 방향키 배열을 만들었다. 그리고 2중 for문을 사용해서 모든 좌표를 탐색해줬다.(brute force) for (int i = 0; ..

[코딩 테스트 대비] 코테 시간복잡도 계산

프로그램 구현 전에 시간복잡도를 미리 계산해봐야한다. 문제에서 주어지는 시간/메모리 제한을 벗어나는 지를 확인해봐야하기 때문이다. * 탐색 횟수당 걸리는 시간 1억 (100,000,000 = 10^8 ) → 1초 10억 = 1,000,000,000 = 10^9 → 10초 예를 들어 int는 4byte로 -2,147,483,648~ 2,147,483,647 범위이기 때문에 크기로 보면 "21억"이며 for문으로 탐색한다면 21초가 소요된다. * 시간 복잡도 Big-O(빅오) 크기 비교 O(1) < O(log n) < O(n) < O(n log n) < O(N^2) < O(2^n) < O(n!) < O(n^n) * N=1억 이라고 했을 때, 빅오표기법에 따른 실행시간 즉, 실행시간이 1초로 제한되어 있다면 ..

[C++][BEAKJOON][DP] 동전1

[문제] 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net [문제설명] n가지의 동전이 있을 때, 이 동전들을 적당히 합쳐서 k원이 되게 하는 경우의 수를 찾는 것. [풀이] Bottom-up 방식으로 1을 만드는 방법, 2를 만드는 방법, 3을 만드는 방법, ... 10을 만드는 방법까지 구할 것이다. 이 때, 2,3,...을 만드는 방법을 이전에 구한 값을 이용할 것이다. 문제에서 주어진 1,2,5 동전으로 생각해보면, 1,2,5로 1을 만드는 경우의 수는 1 한가지이다. 1,2,5로 2를 만드는 경우의 수는..

[C++] 정적/동적 할당된 배열의 크기 구하기

정적할당으로 만들어진 변수는 DATA영역에 저장되는데, 동적할당으로 만들어진 변수는 HEAP영역에 저장된다. DATA 영역에 할당된 변수의 메모리 크기는 sizeof 연산자로 크기를 불러 올 수 있지만, HEAP 영역에 할당된 변수의 메모리 크기는 sizeof 연산자로 불러올 수 없다. _msize 연산자로 불러와야 한다. _msize Learn more about: _msize docs.microsoft.com * 정적할당으로 만든 배열의 크기 구하기 int arr[5]; int arr_size = sizeof(arr) / sizeof(int); * 동적할당으로 만든 배열의 크기 구하기 #include #include // _msize() 사용을 위해 malloc.h 헤더 추가! using namesp..

[C++][BAEKJOON][시뮬레이션] 17144번 미세먼지 안녕!

문제 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 풀이 미세먼지가 퍼지고 나서 기존 맵의 값을 갱신해두면 다음 미세먼지의 확산에 영향을 미치므로 int cal_map[1001][1001] = { {0,0}, }; 이라는 새 변수를 만들어서 그 변수에 값을 계속 더한 후, 마지막에 더하는 식으로 구현했다. 공기청정기의 순환부분은 공기청정기 위아래를 0으로 표시해두고 위쪽은 반시계방향, 아래쪽은 시계방향으로 한 칸씩 돌렸다. for 문 8개로 ;;;;; 마지막에 미세먼지의 양을 계산하는 것이므로 map에서 -..

[Unity] Timeline, Playable Director, Binding, Clear Bindings

* Timeline : 복합 애니메이션을 제작할 때 쓰는 Tool (Playable Director에 의존) Object에 Playabel Director Component를 추가하고 만든 Timeline은 playable 속성으로 들간다. * PlaybleDirector : Timeline Asset의 트랙과 게임 오브젝트를 연결해주기 위해 사용 * Bindings Timeline 에셋 트랙에 연결된 Audio, Animation 등의 정보들 [Binding 정리] 객체에 해당 스크립트 달아서 쓰이지 않는 binidng들 정리하기 #if UNITY_EDITOR [Sirenix.OdinInspector.Button] void ClearBinding() { var directors = Object.Find..

[git] commit이 git에 반영되지 않을 때 대처법

1. git url에 origin으로 연결되어 있는지 확인하자 git remote -v 'origin https://github.com/계정/레퍼지토리' 라는 결과가 나와야 한다. 2. 아니라면 remote에 계정 연결이 잘 안되어 있는 것이므로 연결해주면 된다. git remote add origin https://github.com/계정/리포지토리 3. 그리고 다시 push해보면 OK. [git 공식 reference 참조] Git - 리모트 저장소 원격 저장소라 하더라도 로컬 시스템에 위치할 수도 있다. remote'' 저장소라고 이름이 붙어있어도 이 원격 저장소가 사실 같은 로컬 시스템에 존재할 수도 있다. 여기서 remote'' 라는 이름은 반드 git-scm.com

728x90