Problem Solving
-
[BOJ] #17140 _ 이차원 배열과 연산Problem Solving/BOJ 2019. 7. 17. 07:16
[이차원 배열과 연산] https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net R연산과 C연산을 코드로 구현하는 문제인 것 같다. 정렬 시 우선순위 큐를 이용하면 쉽게 구현할 수 있다. 우선순위 큐를 사용할 때 자료형으로 pair을 사용하면, pair 일 경우에 a값이 같으면 b의 값을 기준으로 우선순위가 결정된다. [ 소스 코드 ] #include #include #include #include #define MAX 101 using n..
-
[SWEA] #5658 _ 보물상자 비밀번호Problem Solving/SWEA 2019. 7. 17. 07:08
[보물상자 비밀번호] https://www.swexpertacademy.com SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Rotation 돌리는 방법으로 가장 뒤의 문자를 맨 앞으로 옮겨 가능한 hex 값을 구하였다. vector의 back()과 insert()를 이용하여 쉽게 구현할 수 있었다 :) [ 소스 코드 ] #include #include #include #include #include #define MAX 28 using namespace std; string val = "0123456789ABCDEF"; //Hex vector treasure; int n, k; int Find_Passwor..
-
[SWEA] #1249 _ 보급로Problem Solving/SWEA 2019. 7. 17. 07:00
[보급로] https://www.swexpertacademy.com/ SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 처음에는 dp로 풀 수 있을 것이라고 생각하였다. 그러나, 아래와 같이 돌아가야하는 경우에 내가 생각한 dp로 풀면 올바른 답을 얻을 수 없다. dp의 결과로는 7이 최소 시간으로 구해지나, 최소 시간은 6이다. 이와 같은 경우를 고려하기 위해 bfs를 사용하였다. 지도에서 bfs로 그냥 탐색하면 시간이 너무 오래 걸리기 때문에 불필요한 탐색은 줄여야한다. dp의 결과를 기준으로 두고, dp의 값 보다 작은 경우에만 bfs로 탐색하여 최소 시간을 구하는 방식으로 구현하였다. (다른 사람의 풀이를..
-
[BOJ] #16236 _ 아기상어Problem Solving/BOJ 2019. 7. 11. 01:20
[아기상어] https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크 www.acmicpc.net 조건이 많은 문제이다. 물고기의 크기에 상관없이 무조건 가까이 있는 물고기를 먹기만 하면 된다. 따라서, BFS가 적합..
-
[SWEA] #1208 _ FlattenProblem Solving/SWEA 2019. 7. 10. 22:35
[Flatten] https://www.swexpertacademy.com SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 간단한 문제이다. 어떠한 알고리즘 기법도 사용하지 않고 풀 수 있다 :) [ 소스 코드 ] #include #include using namespace std; int box[100]; int solve(int dump); int main() { int dump; for (int i = 1; i 0) { for (int i = 0; i box[i]) min_idx = i; if (b..