728x90

Problem Solving 26

[백준 / BOJ] 1753 최단경로

알고리즘 분류: 다익스트라 문제 링크: www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net 기본 다익스트라 유형이다. priority queue를 사용해서 다음 방문할 곳의 정보를 O(n) -> O(logn)만에 알아낼 수 있다. 총 시간복잡도는 O((E+V)logV)가 된다. dist배열에 시작 지점부터 도착 정점까지 현재까지의 최소비용을 저장하며 갱신하는 방식이다. 새로운 정점을 거쳐서 도착했을 때, 저장된 값(dist[nxt])과..

[백준 / BOJ] 2667 단지번호붙이기

알고리즘 분류: DFS 문제 링크: www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 2차원 배열에 입력을 받고 2중 포문을 돌면서 집을 발견하면 인접한(상하좌우)부분을 0으로 처리한다. 이 때, DFS 함수를 호출하여 각 단지의 집의 갯수를 반환받아 벡터에 저장한 후, 마지막에 정렬하여 출력하면 풀린다! #include #include #include #include #include #include #include #include #include #includ..

[백준 / BOJ] 11054 가장 긴 바이토닉 부분 수열

알고리즘 분류: DP, LIS 문제 링크: www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net LIS를 활용하면 간단하게 구현할 수 있는 DP문제이다. 왼쪽부터 LIS, 오른쪽부터 r_LIS배열에 저장한 후 최대 길이(두 LIS의 합-1)를 구하면 된다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #i..

[백준 / BOJ] 1992 쿼드트리

알고리즘 분류: 재귀, 분할정복 문제 링크: www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 재귀로 구현할 때 여는 괄호 위치를 잘 잡아줘야한다. 사이즈 만큼 정사각형을 압축 성공했으면 다시 재귀가 돌지 않도록 함수를 끝내주어야 한다.(return으로 종료) #include #include #include #include #include #include #include #include #include #include #include #includ..

[백준 / BOJ] 11866 요세푸스 문제 0

알고리즘 분류: 자료구조, 큐 문제 링크: www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net deque를 활용한 풀이 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define INF 1e9 using namespace std; //https://www.acmicpc.net/prob..

[백준 / BOJ] 1541 잃어버린 괄호

알고리즘 분류: 문자열, 그리디, 수학 문제 링크: www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net '-' 기호가 나온 후 모든 연산을 '-'로 해주면 최솟값이 되기 때문에 sign으로 체크해주었다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include..

[백준 / BOJ] 2231 분해합

알고리즘 분류: 브루트포스 문제 링크: www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define INF 1e9 usi..

[백준 / BOJ] 2798 블랙잭

알고리즘 분류: 브루트포스, 백트래킹, 순열 문제 링크: www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 3중 포문으로 브루트포스를 구현해도 풀리는 문제이다. 백트래킹과 순열 2가지로 문제를 풀었다. 1. 백트래킹 #include #include #include #include #include #include #include #include #include #include #include #include #include #in..

[백준 / BOJ] 1002 터렛

알고리즘 분류: 기하학, 수학 문제 링크: www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 두 원의 6가지 관계를 고려한다. [경우의 수] 1. 일치: -1 2. 멀리 떨어짐: 0 3. 외접: 1 4. 내접: 1 5. 두점: 2 6. 큰 원 내부에 작은 원이 있고 겹치지 않음: 0 총 6가지 경우의 수로 나누어 푼다. 5, 6번 처리가 실수하기 쉬우므로 주의할 것! #include #include #include #include #include #include #include #include #include #..

[백준 / BOJ] 2579 계단 오르기

알고리즘 분류: DP 문제 링크: www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net dp[a][b]: "현재 b개의 계단을 연속해서 밟고 마지막 계단이 a일 때 최대합"이라 정의하여 풀었다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #defin..

728x90