목록알고리즘 (508)
어흥
문제 링크: https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누 www.acmicpc.net 1. 주의할 점 - 5가지 유형의 테트로미노 중 'ㅗ'모양을 제외하고는 DFS로 찾을 수 있다. - 'ㅗ' 형태의 테트..
현재 index를 기점으로 1칸 왼쪽과 1칸 오른쪽이 모두 현재 index보다 높이가 높은 경우문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWS2h6AKBCoDFAVT SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 우뚝 선 산의 정의에 따라 한개의 봉우리를 기점으로 여러개의 구간이 있을 수 있다. - Low와 High 배열을 사용하여 꺽이는 부분에 대한 정보를 저장한다 - 시작부분이 High인 경우: Arr[0]>Arr[1] -> 우뚝 선 산에 포함될 수 없으므로 다음 High로 넘어..
문제 링크: https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A Set을 사용한다 이유: A가 2배씩 증가한다고 해도 30개만 들어간다(2^30>10억) + 10*A+1의 경우 그보다 적게 들어간다 #include #include #include using namespace std; struct info { long long idx; int va..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRxnnah2sDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 노드의 개수 b.val; } }; info tmp; int main() { int test, node, edge, start, end, vv; cin >> test; for (int t = 1; t > node >> edge; vector v[401]; int dist[401]; for (int i = 0; i > start >> ..
문제 링크: https://www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 반드시 먼저 완료되어야 할 작업들이 있다. 이 작업들은 번호가 아주 예쁘게 매겨져 있어서, K번 작업에 대해 선행 관계에 있는(즉, K번 작업을 시작하기 전에 반드시 먼저 완료되어야 하는) 작업들의 번호는 모두 1 이상 (K-1) 이하이다. 작업들 www.acmicpc.net 1. 주의할 점 - 위상정렬이 1개가 아니다 2. 구현 - 모든 Node의 작업이 끝나는 시간의 최댓값을 result 배열에 저장..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWvQZmdKUoEDFASy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 브루트포스는 무조건 시간초과다. 쓸 생각 하지 말자 - BFS로 접근해보자 2. 구현 - 한 Node로 부터 시작해서 연결된 다른 Node들을 자신과 다른 색으로 칠한다 - 색을 칠하려고 할 때, 이미 자신과 같은 색을 지닌 경우 -> No - 모든 Node를 칠했으며, 도중에 불가능한 케이스로 판명되지 않았을 경우 -> Yes import java.io.Buffer..
문제 링크: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWxQ310aOlQDFAWL SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 브루트포스로 구현해도 경우의수는 10^6이여서 이외의 계산을 모두 처리한다 해도 8초 안에 해결된다 - 구간의 시작과 끝부분을 왜 주었는지 생각해보자 - 총 햄스터 마리수가 같을 경우, 사전순으로 앞에 오는것을 출력해야 한다. 2. 구현 - 구간의 끝부분을 기준으로 내림차순으로 정렬하자. 만약 같다면, 시작구간의 내림차순으로 정렬 (이 방식으로 하면 알아서 사전순으로..
문제 링크: https://codeforces.com/contest/1305/problem/C Problem - C - Codeforces codeforces.com 1. 주의할 점 - N의 범위가 20만이므로 N^2으로는 TLE가 발생한다. - M의 범위가 1000이하라는 사실에 유의한다 2. 구현 - 입력으로 받은 수 An % M의 값이 이미 존재하는 경우, 파이값은 무조건 0이다 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int test, num, mod, tt; cin >> num >> mod; vector v; bo..