문제 풀이
-
[SWEA] 5650 핀볼게임문제 풀이 2020. 5. 12. 19:46
5650 핀볼게임 풀이)모든 경우를 다 확인하는 문제이다. 빈 공간이면, 빈 공간에서 시작하여 상하좌우 4방향으로 핀볼이 움직였을 경우 다 확인해봤다. 1. 핀볼이 웜홀을 만날 때웜홀 번호대로 저장해둔 좌표를 확인해서 바꿔줬다.vector wallhole[5]; // 벡터 인덱스 0 1 2 3 4 5 는 웜홀 6 7 8 9 10을 뜻한다wallhole[0] //웜홀 6의 좌표 2개를 저장wallhole[1] //웜홀 7의 좌표 2개를 저장 2. 핀볼이 블록을 만났을 때 각 블록마다 어떤 방향에서 블록을 만났는지, 그로 인해 어떻게 방향이 바뀌는지 를 다 저장해줬다. 방향을 상 0 하 1 좌 2 우 3이라고 했을때 1번 블록) 파란색이 블록으로 이동한 방향, 초록색이 블록을 만나서 바뀌는 방향이다.현재 좌..
-
[SWEZ] 2383 점심 식사시간문제 풀이 2020. 5. 11. 21:15
2383 점심 식사시간 풀이)정말 어이없게 시간이 걸린 문제이다.계단 내려가는 시간을 저장하는 배열(int s_time[2])을 테스트케이스마다 초기화 하지 않아서 틀린건데방법이 틀려서인줄 알고 계속 고민했다., 그냥 초기화를 안한거...초기화를 잘하자.. 풀이과정을 간략히 말하자면 이러하다.먼저 조합방식(dfs)을 이용해 각 사용자가 어떤 계단을 이용할지 정해줬다. 모든 사용자가 어떤 계단을 사용할지 결정되었다면, 직접 만든 cal()함수를 통해 시간을 계산해줬다. cal()함수의 구성은 이러하다vector time[2]; // 첫번째 계단과 두번째 계단을 이용하기로 한 사용자들이 각자 계단까지 걸리는 시간(이동시간) 저장한 것 time 벡터를 오름차순으로 정렬하면, 각자 계단마다 언제 사용자가 먼저 ..
-
[SWEA] 2117. 홈 방범 서비스문제 풀이 2020. 5. 9. 23:33
2117 홈 방범 서비스 풀이)각 칸 좌표마다 마름모 범위만큼 둘러봐. 집들의 개수 세어 풀었다.마름모 범위(k) 설정은 1부터 n+1(혹시 몰라 n보다 크게)까지했다. 주의점이거 때문에 어이없게 틀렸었다.손해를 보지 않으면서 가장 많은 집에게 홈방범 서비스를 제공한다. 라는 뜻이이익이 0이여도 된다는 얘기였다. 즉, 처음에는 profit > cost 로 풀어서 틀렸는데profit >= cost 로 계산해야 한다는 것이다. 코드) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#include #includ..
-
[SWEA] 5653. 줄기세포배양문제 풀이 2020. 5. 9. 17:29
5653 줄기세포배양 풀이) 처음에는 어떻게 좌표를 잡아야하는지 몰라서, set을 이용해서 이미 세포가 있는 곳은 번식하지 않게 했다.(세포는 struct sepo{}를 선언해서 관련 정보를 저장했고)그러다보니 통과는 했지만 시간이 어마 무시했다. set을 이용한 코드) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108#include #include #include #in..
-
[SWEA] 1952. 수영장문제 풀이 2020. 5. 8. 20:22
1952 수영장 풀이)DFS를 이용해서 모든 경우를 다 확인해보면 되는 문제였다. 1월에만 1년 이용권을 살 수 있고,그 외 나머지 월에는 1일, 1달, 3달 이용권을 살 수 있는 선택지가 있다.그 조합들을 다 확인해보면 된다. 코드) 12345678910111213141516171819202122232425262728293031323334353637383940414243#include #include using namespace std; int cost[4];//1일, 1달, 3달, 1년int result;int month[13]; void dfs(int wal,int res) { if (wal > 12) { result = min(result, res); return; } if (wal == 1) {..
-
[SWEA] 1953 탈주범 검거문제 풀이 2020. 5. 8. 18:51
1953 탈주범 검거 풀이)bfs를 이용해 탈주범이 이동하게 푼 문제이다 핵심은각 터널마다 어떤 방향(상하좌우)로 움직일 수 있는지,방향으로 움직였을때 움직인 방향의 터널과 연결될 수 있는지를 저장해놓는 것이다. 나같은 경우는 터널 구조물 1~7번 각각 어떤 방향으로 움직이는지를 vector turner[8];에 저장하고방향으로 움직였을때 터널에 이어질 수 있는 지를 vector connect[4];에 저장했다. turner[i] = i번째 터널일 경우 어떤 방향으로 움직일 수 있는지 상하좌우를 0, 1, 2, 3 이라고 할때터널 구조물 1은 (십자가 모양) : 0, 1, 2, 3 방향 모두 움직일 수 있다.터널 구조물 2는 (세로막대기 모양) : 0, 1 방향으로만 움직일 수 있다....이런식으로 생각..
-
[SWEA] 2382 미생물 격리문제 풀이 2020. 5. 7. 20:50
2382 미생물 격리 풀이)백준 17143 낚시왕 문제랑 똑같이 풀었다. 이차원 vector을 사용해서 중복된 위치의 군집을 해결해준다는 것이 핵심이다. 코드) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192#include#include #include using namespace std; struct virus { //세로위치, 가로위치, 미생물 수, 이동방향, 바이러스 구별 인덱스 int y, x, num, dir, idx; virus(i..