목록Programming (82)
블로그 언저리인 무언가
문제 : 2879 코딩은 예쁘게 2879번: 코딩은 예쁘게 첫째 줄에 줄의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 현재 줄에 있는 탭의 개수가 주어지며, 1번째 줄부터 순서대로 주어진다. 탭의 개수는 0보다 크거나 같고, 80보다 작거나 같은 정수� www.acmicpc.net 소스코드의 현재 탭의 개수와 원하는 탭의 개수가 주어질 때, 연속된 줄을 그룹을 선택해 편집하는 최소 횟수를 구하는 문제이다. 그리디 알고리즘을 활용해 한번 탭을 추가하거나 삭제할 때 현재 줄부터 가장 뒤의 줄까지 중 가장 많은 탭 개수를 한 번에 조절할 수 있는 위치를 찾아 처리해주는 것을 반복하면 된다. Code #include #define ll long long using namespace std; l..
문제 : 1577 도로의 개수 1577번: 도로의 개수 첫째 줄에 도로의 가로 크기 N과 세로 크기 M이 주어진다. N과 M은 100보다 작거나 같은 자연수이고, 둘째 줄에는 공사중인 도로의 개수 K가 주어진다. K는 0보다 크거나 같고, 100보다 작거나 같은 �� www.acmicpc.net 도시의 크기가 주어지고 공사 중인 도로의 크기가 주어졌을 때, (0,0)에서 (N, M)까지 가는 경우의 수를 출력하는 문제이다. 도로가 정상적일 때 현재 위치기준 왼쪽+아래가 경우의 수 이므로 공사중인 도로인지 아닌지 체크하며 DP 배열을 채우면 된다. Code #include #define ll long long using namespace std; struct ABC{ ll a, b, c, d; ABC(){..
문제 : 14370 전화번호 수수께끼 (Large) 14370번: 전화번호 수수께끼 (Large) 첫 줄에 테스트케이스의 개수 T가 주어진다. 각 테스트케이스에는 상대방이 제시한 스트링 S가 주어진다. S는 영어 대문자로만 이루어져 있다. 1≤ T ≤ 100이고, S의 길이는 3 이상 2000 이하이다. www.acmicpc.net 전화번호의 각 자리를 영단어로 바꾸고 이를 뒤섞은 문자열이 주어졌을 때, 원래 전화번호를 알아내는 문제이다. 각 영어로 된 숫자들에서 유일한 문자를 가진 것들을 먼저 찾아내고 그 숫자를 제거했을 때 다시 유일한 문자들을 가진 숫자를 제거하는 식으로 진행하면 0-2-4-6-8-1-3-5-7-9 순서로 구하면 된다는 것을 알 수 있다. Code #include #define ll..
문제 : 4388 받아올림 4388번: 받아올림 어린이에게 여러자리 숫자의 덧셈을 가르칠 때는 오른쪽 자리부터 왼쪽으로 하나씩 계산하는 방법을 가르쳐준다. 이때, 받아올림이 발생하게 되며 아이들은 여기서 혼란에 빠진다. 받아올림이� www.acmicpc.net 두 수를 입력받아 덧셈을 할 때, 받아올림이 일어나는 횟수를 출력하는 문제이다. 두 수의 끝자리부터 순서대로 더하면서 받아올림이 생기는 경우를 체크해주면 된다. Code #include #define ll long long using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); while (1){ ll a, b, ans=0; cin >> a >> b; if (a==0 && b==..
문제 : 9370 미확인 도착지 9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net 예술가들의 출발지와 목적지 후보가 주어졌을때, 어떤 도로를 지나서 최단거리로 갈수있는 모든 후보를 출력하는 문제이다. Dijkstra 알고리즘을 사용해 출발지~도착지까지의 최단거리가 출발지~교차로+도로의 길이+교차로~도착지의 최단거리와같은 경우를 찾아 출력하면 된다. Code #include #define ll long long #define INF 1e9+7 using namespace std; struct ABC{ ll ..
#include // gcc에서 대부분의 헤더를 포함하는 헤더파일 #define ll long long //long long 축약 #define INF 1e9+7 // 최대값 #define MOD (ll)(1e9+7) // 나머지계산 using namespace std; typedef pair pll; // pair 축약 // 구조체 만들기 struct Edge{ ll idx, dst; Edge() {} Edge(ll a, ll b): idx(a), dst(b) {} }; struct dice{ ll arr[3][2]; dice() {} dice(ll a, ll b, ll c, ll d, ll e, ll f) : arr{{a,f},{b,d},{c,e}} {} }; // 구조체 비교함수(우선순위 큐에 자주..
문제 : 1753 최단경로 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net 방향 그래프가 주어졌을 때, 시작점에서 다른 모든 점까지의 최단경로를 구해 출력하는 문제이다. Dijkstra 알고리즘을 사용해 순회한 후 경로가 존재하는지 체크해 배열의 값을 출력하면 된다. Code #include #define ll long long #define INF 987654321 using namespace std; typedef pair pll; struct ABC { ll idx, dst; ..