분류 전체보기 180

백준 1753 - 최단경로

문제 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 www.acmicpc.net 풀이 그래프 상에서 최단경로를 찾는 문제이다. 간선의 가중치는 음수가 존재하지 않으므로 다익스트라 알고리즘을 이용하여 문제를 해결한다..

BOJ 2020.01.10

백준 1197 - 최소 스패닝 트리

문제 https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 가중치 C인 간선으로 연결되어 있다는 의미이다. C는 음수일 수도 있으며, 절댓값이 1,000,000을 넘지 않는다. 최소 스패닝 트리의 가중치가 -2147483648보다 크거나 같고, 2147483647보다 작거나 같은 데 www.acmicpc.net 풀이 최소 스패닝 트리를 구하는 알고리즘은 크루스칼과 프림 알고리즘이 있다. 1. 프림 알고리즘은 정점 집합을 기준으로 트..

BOJ 2019.12.26

백준 1167 - 트리의 지름

문제 https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2≤V≤100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. (정점 번호는 1부터 V까지 매겨져 있다고 생각한다) 먼저 정점 번호가 주어지고, 이어서 연결된 간선의 정보를 의미하는 정수가 두 개씩 주어지는데, 하나는 정점번호, 다른 하나는 그 정점까지의 거리이다. 예를 들어 네 번째 줄의 경우 정점 3은 정점 1과 거리가 2인 간선으로 연결되 www.acmicpc.net 풀이 트리에서 지름은 거리가 가장 먼 두 점 사이를 의미한다. 이를 구하기 위해 먼저 임의의 노드에서 가장 거리가 먼 노드를 구..

BOJ 2019.11.15

백준 1744 - 수 묶기

문제 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, 어떤 수열이 {0, 1, 2, 4, 3, 5}일 때, 그냥 이 수열 www.acmicpc.net 풀이 1. 1 보다 큰 양수는 2개를 곱했을 때 더한 것 보다 무조건 크다. 그러므로 1보다 큰 두 수는 묶어야 한다. 1은 다른 ..

BOJ 2019.10.09

백준 1697 - 숨바꼭질

문제 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 www.acmicpc.net 풀이 현재 위치 X에서 이동할 수 있는 세가지 방향인 X+1, X-1, X*2를 검사하고 K가 맞는지 확인한다. 만약 K가 아니라면 ..

BOJ 2019.10.02

백준 2875 - 대회 or 인턴

문제 https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 그런데 올해에는 대회에 참여하려는 학생들 중 K명을 반드시 인턴쉽 프로그램에 참여하라는 학교의 방침이 생기게 되었다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다. 백준대학교에서는 뛰어난 인재들이 많기 때문 www.acmicpc.net 풀이 2명의 여학생과 1명의 남학생을 이용해서 팀을 만든 후, 인턴에 참여할 학생을 뽑아야 한다. 여학생과 남학생 중 남은 ..

BOJ 2019.09.30

백준 2304 - 창고 다각형

문제 https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 빈 칸을 사이에 두고 주어진다. L과 H는 둘 다 1 이상 1,000 이하이다. www.acmicpc.net 풀이 가장 긴 막대 기둥을 기준으로 왼쪽과 오른쪽으로 나눈다. 왼쪽 부터 가장 긴 막대 기둥까지 진행하면서 스택의 최대 높이를 갱신하면서 넓이를 더해준다. 마찬가지로 오른쪽에서도 가장 긴 막대 기둥까지 진행하면서 스택의 최대 높이를 갱신하면서 넓이를 더해준다. 코드 1 2 3 4 5 6 7 8 9..

BOJ 2019.09.29

백준 1541 - 잃어버린 괄호

문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. www.acmicpc.net 풀이 55-50+40 에서 55-(50+40)으로 괄호를 씌우면 최소값인 -35가 나오게 된다. 이 때 ()를 전개해서 표현하면 '+' 기호는 '-' 기호로 바뀌어서 55-50-40이 된다. 이 원리를 이용해서 첫 번째 '-' 이후에 나오는 모든 '+' 기호를 '-'로 치환하면 최소값이 나오게 된다. 코드 1 2 3 4 5 6 ..

BOJ 2019.09.24

백준 7576 - 토마토

문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토들의 정보가 주어진다. 즉, 둘째 줄부터 N개의 줄에는 상자에 담긴 토마토의 정보가 주어진다. 하나의 줄에는 상자 가로줄에 들어있는 토마토의 상태가 M개의 정수로 주어진다. 정수 1은 익은 토마토, 정수 0은 익지 않은 토마토, 정수 -1은 토마 www.acmicpc.net 풀이 BFS 탐색을 이용하는 문제이다. BFS 탐색을 이용해서 같은 레벨에 있는 좌표들의 탐색이 끝나면 그 때 결과 값을 증가시켜주면..

BOJ 2019.09.23

백준 10815 - 숫자 카드

문제 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이가 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 가지고 있는 숫자 카드인지 아닌지를 구해야 할 M개의 정수가 주어지며, 이 www.acmicpc.net 풀이 이분 탐색을 이용해서 숫자 카드가 존재하는지 알아본다. 이분 탐색을 하기 위해서 숫자 카드의 배열 A를 정렬을 한다. 상..

BOJ 2019.09.22