목록전체 글 (104)
민준이 블로그에영
처음에는 방문하는 방향 그대로 이동하는줄 알고 BFS로 접근해야하는줄 알아서 queue로 선언해서 접근하려고 했음알고보니까 stack으로 접근해야하는 문제였음(굉장히 곤란)adj로 간선들을 입력받은 뒤 간선을 정렬해주자!간선을 정렬하고 stack에 크기 순으로 삽입하자!(stack은 뒤에서 뽑아주니까 역순으로 정렬 안해도 괜찮은거 아시죠?)stack에서 뽑으면서 order를 바꿔주자(order이 이미 값이 들어있다면 안바꿔도 되는거 아시죠?)위 말대로 코드 구현하면 아래처럼 결과가 나옴 ^오^ #include #include #include #include using namespace std;int N, M, R;vector adj[100001];vector order(100001, 0);stack s;..
노드에서 노드 간으로 이동할 수 있음 -> BFS를 활용하자.visited 배열을 선언해서 방문을 했는지 확인하자.dist 배열을 선언해서 루트에서 이동하는 데에 얼마나 걸리는지 체크하자.다 완성되었다면 반복문을 사용해서 dist를 돌면서 k 이하인 경우 사과가 있을 떄 result를 증가시키자~ #include #include #include using namespace std;int N, M;bool inArea(int x, int y) { return (x >= 0 && x = 0 && y > N >> M; vector> mat(N, vector(M)); for (int i = 0; i > str; for (int j = 0; j > visited(N, vector(M,..
상하좌우로 이동할 수 있고, 시작위치가 2이므로 BFS 알고리즘을 활용한다고 판단 (Q를 선언하자)시작하자마자 Q에 2부터 삽입하자visited 배열을 선언해서 이동하는 것을 확인하자dist 배열을 선언해서 이동할 때마다 이동 거리를 증가시켜주자0이나 1이 아닌 경우에는 (2는 시작지점이므로 Q에 이미 들어가있어서 판별 조건에서 제외) 3, 4, 5일 것이므로 이 경우에 TAK을 출력하면서 dist를 출력하면서 프로그램을 종료하자.끝까지 돌았는데도 프로그램이 종료가 되지 않는 경우에는 딱따구리가 밥을 먹을 수 없는 것이므로 NIE를 출력하면서 프로그램을 종료하자.딱따구리가 밥을 먹을 수 있을까요~ 없을까요~? 는 위 로직과 같이 흐름을 짜서 코드를 구현하면 아래와 같이 완성할 수 있다. #include ..
문자열의 길이는 50보다 작음, 즉 명령은 최대 50보다 작게 내릴 수 있다.방향을 바꿔서 이동할 수 있으므로 101 X 101 크기를 가진 2차원 배열의 중간에 말을 놓자.기본 배열은 '.'으로 모두 초기화하자.이동을 할 때마다 해당 배열의 값을 '#'으로 바꾸자.이동한 위치에 따라서 max_x, max_y, min_x, min_y를 갱신시켜주자. (나중에 출력을 하기 위한 값)위와 같이 코드를 짜고 출력만 잘 해주면 정답~ #include #include using namespace std;int dx[] = {1, 0, -1, 0};int dy[] = {0, 1, 0, -1};int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr)..
시뮬레이션 문제고, 주어진 조건이 많기 때문에 문제를 풀기 전에 먼저 잘 설계해놓고 들어가보자.1, 2, 3, 4, 5, 6, 7, 8, 9 까지 이동 방향이 있음이동 방향에 관련된 배열 코드가 필요하겠구만.int dx[9] = {1, 1, 1, 0, 0, 0, -1, -1, -1};int dy[9] = {-1, 0, 1, -1, 0, 1, -1, 0, 1}; 종수의 아두이노는 한대, 미친 아두이노는 여러대가 존재할 수 있음종수의 아두이노는 pair로 위치만 설정, 미친 아두이노는 vector>로 위치를 push_back 해주기pair I_pos;vector> R_pos; 종수 아두이노의 무빙은 맵밖으로 나가지 않게 주어지지만, 미친 아두이노는 나갈 수도 있기 때문에 bool 함수로 밖으로 나가는지 판단..
수학적인 관점으로 접근해보자. 한 원 안에 두 점이 들어있다 -> 진입/이탈이 일어나지 않는다.한 원 안에 두 점이 들어있지 않다 -> 진입/이탈이 일어나지 않는다.원 안에 한 점이 들어있고, 한 점은 들어있지 않다 -> 진입/이탈이 발생한다. 그렇다면 원 안에 존재하는가의 여부는 어떻게 판단하는가?-> 점과 원의 중심까지의 거리와 반지름과 비교해서 판단한다.이를 수학적으로 구현하자.sqrt((x1 - x2)^2 + (y1 - y2)^2) -> 점과 점 사이의 거리 #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int T; cin >> ..