일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 순서대로방문하기
- 조합
- 루돌프의반란
- DenseDepth
- 이진탐색
- 삼성기출
- DP
- 코드트리
- 왕실의기사대결
- Calibration
- 소프티어
- ARM
- 토끼와 경주
- 마이크로프로세서
- 3Dreconstruction
- 마법의숲탐색
- dfs
- ros
- 코드트리빵
- 싸움땅
- 슈퍼컴퓨터클러스터
- BFS
- 포탑부수기
- 수영대회결승전
- ISER
- 시뮬레이션
- 나무박멸
- 백준
- ICER
- 구현
- Today
- Total
목록알고리즘/문제풀이 (32)
from palette import colorful_colors
가지치기를 2번 해줘야 한다 // 최악의 케이스 경우도 int를 넘지는 않음. (1억 8천 회). 단 1초는 넘음(1억회 이상이니깐) // 처음엔 순열 다 만들고 각 경우마다 테스트할랬는데 20에서 시간초과 // -> 순열 만들면서 동시에 판단하기 // 가지치기 2개 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; int T, N, answer, totalWeight; int choo[10]; int visited[10];// 순열 만들기 위한 체크 함수 //int factorial[] = {0, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880};이거 써봤자 의미 거..
구조체 사용, sort를 이용한 벡터 정렬 사용 BFS, 정렬 연습에 좋은 문제! #include #include #include #include #include using namespace std; int N, startY, startX; int MAP[21][21]; int visited[21][21]; int dy[4] = { -1, 1, 0, 0 }; int dx[4] = { 0, 0, 1, -1 }; int babyShark = 2; int mapTime, feedCnt; struct fish { int dist; int y; int x; }; struct Node { int y; int x; }; bool compare(fish a, fish b) {// 나중에 fishes 벡터를 정렬하기 위..
3차원 벡터를 이용해 풀었다. 생각해보니 벡터를 요소로 가지는 2차원 배열로 풀어도 될 것 같 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include using namespace std; int dy[4] = { -1, 1, 0, 0 }; // 상하좌우 int dx[4] = { 0, 0, -1, 1 }; int changeDir[4] = { 1, 0, 3, 2 }; // 해당 위치에 들어갔을때 방향 바꿔주는 함수 ex) 0 -> 1 int T, N, M, K, curTime, answer; struct Node { int y; int x; }; struct microbe { int population; int directi..
주어진대로 침착하게 구현만 하면 해결되는 문제! 딱히 알고리즘이 필요없는 쌩구현, 시뮬레이션 문제 #include #include using namespace std; int N, M; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, 1, 0, -1}; int MAP[50][50]; int cnt; int curR, curC, direction; // 반시계 방향으로 value만큼 방향 변환 int directionChange(int direction, int value) { int temp = direction - value; if (temp < 0) temp += 4; return temp; } // 주변 4칸 중 먼지 찾기 함수 bool dustFind(int row, ..
시계방향 rotation 구현을 생각해내느라 헤맸다. 다행히 예제만 맞으면 무난하게 통과가 가능한 문제인 것 같다,,? 구현 방법은 주석 참고 #include #include #include using namespace std; int N, answer; int MAP[101][101]; int dx[4] = { 1, 0, -1, 0 }; int dy[4] = { 0, -1, 0, 1 }; struct coordinate { int x; int y; }; coordinate rotate(int baseX, int baseY, int x, int y) { coordinate newCool; int gapX = x - baseX; int gapY = y - baseY; newCool.y = baseY + g..
초기화 잘 하기, BFS로 탐색 잘 하기! #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; int T, N, W, H; vector MAP; int dy[4] = {-1, 1, 0, 0}; int dx[4] = {0, 0, -1, 1}; int cnt; int maxBroken; int curbrokenNum; //int curMAP[16][13]; struct Node{ int y; int x; int num; }; void init() { cnt = 0; maxBroken = 0; MAP.clear(); } void input() { cin >> N >> W >> H; MAP.resize(H..
재귀를 꼭 써야만 하는 문제. 백트래킹으로 가지치기를 해야 시간초과가 발생하지 않는 문제 dfs로 접근했습니당 나의 가지치기 방법: 전선을 만들지 않고 재귀 돌리기 + for문으로 전선 만들고 재귀 돌리기 다른 가지치기 방법: 재귀 돌리다가 현재 연결한 코어 개수 + 남은 코어 수 < max코어수 면 더 재귀 돌릴 필요도 없음. return하기 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; struct coor { int x; int y; }; struct answers { int processor; int wire; }; int T, N; int MAP[13][13]; int dx[4] = ..
각 블록에 도착할때마다 바뀌는 방향을 changeDirection 2차원 배열에 담아 저장해서 코드를 간결하게 했다. 방향에서 N; for (int i = 0; i > temp; MAP[i][j] = temp; if (temp >= 6) {// 웜홀 저장 wormholes[temp].push_back({i, j}); } } } } int game(int startY, int startX, int direction) { int cnt = 0; int curY = startY; int curX = startX; while (true) { int ny = curY + dy[direct..