목록코딩테스트준비 (76)
되면한다
https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 테케를 보면서 풀이법을 생각해봤는데, 이거다 하는 풀이법이 없었다.... 참고한 블로그 https://algosu.tistory.com/152 [C++] 프로그래머스 - 표현 가능한 이진트리 https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발..
https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 1. 특징 1) 그리디 2) 구현 2. 구현 방식 1) 그리디조건: -와 - 사이의 +는 모두 합해준다. 55-50+3+2+40-4-3 이면, 55-(50+3+2+40)-4-3을 해준다. 2) split 함수를 이용하여, '+', '-'를 기준으로 숫자를 나눈다. +: 처음으로 - 뒤의 + 가 등장하면: sum = tmp의 숫자 연속으로 +가 등장하면: sum+= tmp의 숫자 -: sum이..
https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이법을 떠올리기는 어렵지 않은데, 구현이 복잡하다. 1. 특징 1) 스택을 사용한 구현 2. 구현 방식 1) 날짜(월:일)혹은 시간(시:분)으로 주어진 경우 월*30 + 일, 시 * 60 + 분 등으로 계산하여, 단위를 각각 일, 분으로 맞춰준다. 해당 문제에서 시:분으로 과제 시작시간이 들어오기 때문에 12:10로 들어온 시간을 12*60 + 10으로 계산했다. 2) plans 벡터를 들어온..
https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 1. 특징 1) 우선순위큐를 이용한 다익스트라 2. 구현방식 1) 출발도시(정점)별 를 설정함. vector adj[1004]; //비용, 도착도시 (출발도시별) 2) 정점까지 오는 최단 거리를 나타내는 배열을 선언하고, MAX값으로 초기화함. int d[1004]; fill(d, d + n + 1, INT_MAX); 3) 우선순위 큐를 이용한 다익스트라 알고리즘..
https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 1. 특징 1) 위상정렬: 방향 그래프에서 간선이 주어진 정점 간 선후관계를 위배하지 않도록 나열하는 정렬 (사이클이 없는 방향 그래프에서만 잘 정의됨) 2. 구현 방식 1) 각 정점으로 들어오는 간선의 개수를 deg배열에 저장함. int deg[]; //각 정점의 indegree 수 2) deg[i]가 0이 되는 정점은 queue에 삽입 3) queue..
https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 1. 특징 1) 다익스트라 2. 구현 포인트 1) 마을을 순회하면서, 다익스트라 알고리즘: i마을에서 x마을까지 최단거리를 구하고, 배열에 저장 2) 기본적인 다익스트라 알고리즘: x마을에서 모든 마을까지 3. 코드 #include #include #include #include #include using namespace std; int n, m, x; vector..
https://www.acmicpc.net/problem/11779 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 1. 특징 1) 우선순위큐를 쓰는 다익스트라 알고리즘 2) 현재 정점 이전 정점을 배열에 저장 (코드에서 pre 배열) 2. 코드 #include #include #include using namespace std; int v, e; int st, en; int d[100002]; // 최단 거리 테이블 int pre[100002]; vector adj[100002..
https://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 1. 특징 다익스트라 알고리즘을 이용하는 전형적인 문제. - 우선순위큐로 구현 bfs처럼 암기해야될 코드일 것 같다. 2. 코드 #include #include using namespace std; int v, e, st; int d[20005]; // 최단 거리 테이블 vector adj[20005]; // 비용, 정점번호 const int INF = 1e9..