목록BFS (89)
어흥
문제 링크: www.hackerrank.com/challenges/torque-and-development/problem Roads and Libraries | HackerRank Help the ruler of HackerLand determine the cheapest way to give his citizens access to libraries. www.hackerrank.com 1. 주의할 점 - 범위를 잘 확인한다 - 각 쿼리마다 초기화를 잘 수행한다 - 입력받은 길 중에서, 도서관을 1개 세우는 경우: (Cnt-1)*C_road + C_lib만큼의 비용이 발생하고 각각 도서관을 세우는 경우: Cnt*C_lib만큼의 비용이 발생한다. 즉 C_road>=C_lib일때, 각각 도서관을 세우면 된다..
문제 링크: www.acmicpc.net/problem/1175 1175번: 배달 어제 선물을 모두 포장한 민식이는 이제 선물을 배달하려고 한다. 민식이가 선물을 배달할 곳은 이 문제를 읽는 사람들이 앉아 있는 교실이다. 교실은 직사각형모양이고, 모두 같은 크기의 정사 www.acmicpc.net 1. 주의할 점 - 4차 배열을 사용하여 해당 지점에(y,x) 직전에 어떤 방향으로 도착했으며(dir), 현재까지 배달을 완료한 장소(del: 단, 장소를 구분해야 하므로 한곳: +1, 다른곳: +2) -> 비트마스킹이라고 생각하면 된다 - 구조체를 사용하여 현재 위치, 방향, 현재까지 배달을 완료한 장소, 현재까지의 이동거리를 저장한다 2. 구현 - 배달을 해야하는 장소(C)를 Deliver 벡터에 저장한다 ..
문제 링크: www.acmicpc.net/problem/11451 11451번: 팩맨 각 테스트 케이스에 대해서 정답을 한 줄에 출력한다. 만약 가능할 경우, 팩맨을 조작해야 하는 최소 횟수를 출력한 후, 그 다음에 조작해야 하는 방향을 순서대로 {N, E, S, W}를 사용하여 출력한�� www.acmicpc.net 1. 주의할 점 - 경로를 기억해야 한다 - BFS를 통해 진행하며, 팩맨 2가지의 위치를 한번에 저장하고 있는 구조체를 사용한다 - "귀신과 부딪힌다 -> 라이프가 1 깍인다" : 이 문구가 의미하는 것은? - "두 번째 팩맨" -> 이 문제와 상관이 없다. 불충분한 조건 or 낚시를 하다 만것 2. 구현 - "귀신과 부딪힌다 -> 라이프가 1 깍인다" : 이 문구는 낚시다. 귀신과 부딪..
문제 링크: www.acmicpc.net/problem/16947 16947번: 서울 지하철 2호선 첫째 줄에 역의 개수 N(3 ≤ N ≤ 3,000)이 주어진다. 둘째 줄부터 N개의 줄에는 역과 역을 연결하는 구간의 정보가 주어진다. 같은 구간이 여러 번 주어지는 경우는 없고, 역은 1번부터 N번까지 번호 www.acmicpc.net 1. 주의할 점 - DFS + 메모아이징을 통해 구현하거나 글쓴이처럼 빙글빙글 돌아가게 풀지 않으면 TLE가 날 문제일것 같다 (N Transfer 큐에 저장 - find_dup() 함수를 통해 1번 역에서 시작해서 BFS 과정을 거쳐서 방문이 겹치는 지점을 구해서 Start에 저장한다 -> Start는 무조건 순환선에 속하기 때문에 구했다 - find_cycle() 함수..
문제 링크: https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만�� www.acmicpc.net 1. 주의할 점 - BFS를 통해 해결하며, 현재 이모티콘의 길이만큼만 비교하는 배열을 사용하면 틀린 답이 나온다(ex. 872 -> 22가 나와야 한다) 2. 구현 - Check[][]배열을 통해 현재 이모티콘의 길이, 현재 클립보드에 저장되어있는 길이를 비교한다 - 입력으로 1이 주어지는 경우 바로 0을 출력한다 - 현재 이모티콘의 길이가 구하고자 하는 값과 같다면 Result와..
문제 링크: https://www.acmicpc.net/problem/12886 12886번: 돌 그룹 오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌 세개는 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려고 www.acmicpc.net 1. 주의할 점 - BFS, DFS 2가지 방법으로 모두 풀이가 가능하다 - 단계별로 진행했을 때, 현재 돌의 값들이 이전에 나왔는지 검사하는 과정이 필요하다 - 입력 받을 때, 돌의 총합이 3으로 나눠떨어지지 않으면 바로 0을 출력한다 2. 구현 - 입력받는 돌들의 값을 지역변수 벡터 V에 저장하고 DFS를 수행한다 - DFS() 함수를 수행하면서 각 원소의 값이 모두 같다면 A..
문제 링크: https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net 더보기 [느낀 점] - 최근에 작성한 코드가 더 깔끔한 느낌 - 이전 코드: WA 상태에서 고친 코드 - 최근 코드: 함수를 통해 각 수행 부분을 분담 → AC 결론: 한번에 제대로 작성하도록 하자 1. 주의할 점 - 원판의 숫자에 0만 남아있다면 더 이상 수행하지 않아도 된다 - 원판에는 4개의 숫자가 아닌 M개의 숫자가 써져있다 2. 구현 - 원판에 대한 정보를 입..
문제 링크: programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있�� programmers.co.kr 1. 주의할 점 - 이미 네트워크를 이룬 컴퓨터는 세지 않도록 한다 - 기본적인 BFS문제 2. 구현 - 전달받는 배열을 바탕으로, 1의 원소를 가지고 있다면(열!=행) V[] 벡터에 간선을 저장한다 - 0번부터 컴퓨터의 수-1 까지 For문을 돌리고 아직 네트워크를 형성하지 않은 컴퓨터라면(Check[] 값이 false) Queue에 넣고 해당 컴퓨터와..