로봇이아닙니다 썸네일형 리스트형 백준 1107 / 리모컨 브루트포스 문제인데, 수학문제에 가깝다. 먼저 멀쩡한 버튼으로 숫자를 누르고 목표 채널로 한칸씩 이동할때 걸리는 카운트를 비교하는 코드이다. 굉장히 무식한 코드인데 재귀를 이용한 코드보다 보기 깔끔하고 이해하기 쉽다. 1000000번만 돌면되기 때문에 걸리는 시간도 그리 크지 않다. 코드 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include using namespace std;bool broken[10];int possible(int c) { if (c == 0) { if (broken[0]) { // 0번이 고장났을때. return 0; } else { return 1; .. 백준 5719 / 거의 최단 경로 나중에 다시 한번 풀어야할 문제. 다익스트라와 BFS를 동시에 사용해야하는 문제. 어렵다. 굉장히 헤멘 문제. 플로이드 워셜 알고리즘으로 풀면 최단경로를 '모두' 찾는데 어려움이 생긴다. 1. 다익스트라로 최단경로를 (모두) 찾는다. (최단경로를 따로 저장해두어야한다) 2. 최단경로에 걸친 간선들을 모두 삭제한다. 3. 다익스트라로 새 최단경로를 찾는다. 다익스트라 코드에서 trace를 갱신하는 부분이 핵심이다. 코드 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858.. 우선순위 큐 활용법 http://koosaga.com/9 백준 1753 / 최단경로 다익스트라 문제. 가중치가 붙어있으면 BFS와 queue를 사용하여 풀 수 없다. (음수인 가중치가 있다면 다익스트라도 사용할 수 없다.) 다익스트라에 대한 정보는 꺼무위키에서 보자. https://namu.wiki/w/%EB%8B%A4%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%9D%BC%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 다익스트라를 구현하기 위해선 우선순위 큐(priority_queue)를 사용해야 한다. 일반 queue / BFS 사용법과 다익스트라/우선순위 큐의 사용법 차이는 다음과 같다. 1. 우선순위 큐에서 pair를 사용할 시 first로 비교하기 때문에 가중치를 first에 넣어주어야한다. (first가 같을 시 second를 비교한다) 2. .. 백준 9205 / 맥주 마시면서 걸어가기 굉장히 쉬운 문제인데 어렵게 해석해서 고생했던 문제다. 집 좌표와 편의점 좌표, 펜타포트 좌표를 받고. BFS를 활용하여 펜타포트에 도착할수 있는지, 아니면 각 편의점에 도착할 수 있는지 판단하여 현재 지점에서 갈 수 있는 편의점의 위치를 큐에 넣어주면 된다. 편의점을 방문했는지 확인하는 bool 배열이 필요하다. 코드 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384#include#include#include#include#include#include using name.. 백준 11559 / Puyo Puyo 재밌는 문제. BFS를 이용한 지우기와 맵 갱신이 중요한 문제다. 이런 문제는 일일이 맵을 프린트해보고 결과값을 확인 후 수정하는 것이 중요하다. 내가 절었던 부분은. 한번에 세가지 색이 모두 터질때 카운트가 3이 추가되는 것이 아니라 그냥 1로 친다는 점이다. 코드 printmap() : 맵 출력alldown(); 중간에 빈칸이 생겼을 시 끝까지 떨어질 떄까지 재귀로 맵을 갱신한다.mapcheck(): 폭발이 발생하는지 안하는지 체크, 더 이상 폭발이 발생할 수 없다면 종료.erase(): 폭발 구현. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061.. 백준 1726 / 로봇 BFS 문제 그저 최단거리를 찾는 문제아닌, 방향 바꾸는 행위와 1,2,3칸 직진이 추가된 BFS 문제다. check 배열과 최단거리를 담는 d 배열을 방향값까지 추가하여 3차원으로 선언 후. 직진하는 경우와 방향을 바꾸는 경우를 구현했다. 1. 직진하는 경우 3칸까지 갈 수 있기떄문에 자신의 방향 앞에 놓인 값들이 모두 0일떄 직진할 수 있게 구현했다. 2. 방향을 바꾸는 경우 젤 헷갈렸던 부분 동쪽이 1 서쪽 2 남쪽3 북쪽4 이기 떄문에 예를 들어, 동쪽에서 서쪽에서 바꾸는 경우 숫자는 1이 들지만 방향을 두 번(오른쪽,오른쪽) 바꾸어야되기떄문에 이런 경우들을 체크하는 조건문을 걸어두었다. dir + i == 7 || dir + i == 3 dir은 현재 방향, i는 바꾸고자 하는 방향. 동에서 서.. 백준 9372 / 상근이의 여행 아. 열심히 삽질하다 계속 막혀서 해법을 찾아보니 현타가 온 문제다. BFS 문제인척 하지만 그래프에 대한 기본을 묻는 문제. 나라가 N개이면 간선을 최소 몇 번 타야 모든 나라를 돌 수 있을까? N-1개다. 코드 1234567891011121314151617181920212223#include#include using namespace std; int main() { //freopen("Text.txt", "r", stdin); int testcase; cin >> testcase; while (testcase--) { int m, n; cin >> m >> n; for (int i = 0; i > a >> b; } cout 이전 1 ··· 5 6 7 8 9 10 11 12 다음 목록 더보기