일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- STL
- 문제풀이
- 관계형 모델
- swea
- C++
- baekjoon
- 자료구조
- 프로그래머스
- boot sequence
- 백준
- leetcode
- Database
- ps
- Network
- 전송 계층
- DB
- 네트워크
- Transport layer
- BHS
- Embedded
- 릿코드
- 임베디드
- 다익스트라
- 부트시퀀스
- Djikstra
- BST
- 데이터베이스
- Application Layer
- dp
- 응용 계층
- Today
- Total
목록Algorithm (30)
BOBO's Note
https://www.acmicpc.net/problem/5373 5373번: 큐빙 문제 루빅스 큐브는 삼차원 퍼즐이다. 보통 루빅스 큐브는 3×3×3개의 작은 정육면체로 이루어져 있다. 퍼즐을 풀려면 각 면에 있는 아홉 개의 작은 정육면체의 색이 동일해야 한다. 큐브는 각 면 www.acmicpc.net 풀이 방법 큐브의 각 면의 상태와 회전 등을 Cube라는 클래스로 나타냈다. #define CUBE_SIZE 3 enum {UP, DOWN, FRONT, BACK, LEFT, RIGHT}; class Cube{ public: Cube(){ char colors[6] = {'w', 'y', 'r', 'o', 'g', 'b'}; for(int i=0; i
https://www.acmicpc.net/problem/10217 10217번: KCM Travel 각고의 노력 끝에 찬민이는 2014 Google Code Jam World Finals에 진출하게 되었다. 구글에서 온 초대장을 받고 기뻐했던 것도 잠시, 찬찬히 읽어보던 찬민이는 중요한 사실을 알아차렸다. 최근의 대세�� www.acmicpc.net 풀이 방법 소요시간을 기준으로 다익스트라 알고리즘을 적용해 풀 수 있다. 이때, 지원비용 내에서 최소 소요시간을 구하는 문제이기 때문에 한번 방문했던 vertex더라도 재방문할 수 있다(소요시간은 짧지만 비용이 커서 해당 경로로 못 갈 수 있기 때문이다). 처음엔 다익스트라 알고리즘에서 인접 vertex에 대해 distance 벡터를 업데이트해줄 때 다음과..
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net 풀이방법 다익스트라 알고리즘을 이용해 풀 수 있다. priority queue로 다음 vertex를 고르지 않으면 시간 초과가 발생한다. 두 vertex 사이에 여러 간선이 존재할 수 있으므로, 그 중 가중치가 최소인 간선만 저장하기 위해 adjacency list를 unordered_map을 이용해 변형했다. 각 vertex는 unordered_map을 갖는데, uno..
Dijkstra's Algorithm 다익스트라 알고리즘은 한 vertex에서 다른 vertex들로 가는 최단 경로를 구하는 알고리즘이다. cf) A* 알고리즘: 다익스트라에 휴리스틱을 도입해 더 빠르다. 다익스트라 알고리즘은 한 가지 가정 하에 적용할 수 있다. 모든 edge의 가중치가 양수이다. 다익스트라 알고리즘에서 출발점으로부터 가까운 vertex부터 방문하는 이유는 해당 vertex까지의 거리가 더이상 업데이트될 수 없기 때문이다. 이때 음수 가중치가 허용된다면 이미 방문한 vertex일지라도 더 작은 값으로 업데이트될 수 있어 다익스트라 알고리즘이 제대로 작동하지 않는다. 다익스트라 알고리즘은 distance 벡터와 visited 벡터를 갖는다. distance 벡터는 inf로, visited..
https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. www.acmicpc.net 풀이 방법 뱀의 위치, 움직임, 회전 등을 Snake라는 클래스로 나타냈다. enum Dir{RIGHT, DOWN, LEFT, UP}; class Snake{ public: Snake(): dir(RIGHT) { body.push_front(0); body_pos.insert(0); }; void rotate(int d){ if(d == RIGHT) dir = (dir + 1) % 4; else dir ..
https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 방법 배열의 (r, c)의 값이 k이 될 때까지 반복문을 돌며 배열에 연산을 적용한다. 이때, 100초를 초과하면 -1을 출력하고 프로그램을 종료한다. 배열의 연산은 Array 클래스 내의 change() 메소드로 구현했다. while(!arr.is_equal(k)){ t++; if(t > 100){ cout = C) op_row(); else op_col(); } row-wis..