목록알고리즘/백준 (59)
쌓고 쌓다
https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net #include #include #include using namespace std; // 트럭의 수, 다리의 길이, 최대하중 int N, W, L; int Time = 0; int cL=0; // 현재 하중 vector v; queue q; void solve() { int i = 0; while(1){ if (i> W >> L; for (int ..
https://www.acmicpc.net/problem/20040 20040번: 사이클 게임 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한 www.acmicpc.net #include using namespace std; int N, M; int parent[1000001]; int find(int a) { if (parent[a] == a) return a; return parent[a]=find(parent[a]); } void Union(int a, int b) { a = find(parent[a]); b = find(parent[b]); if (a ..
https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 전체 코드 #include #include using namespace std; stack s; string str; int arr[26]; int N; double cal(char c) { double op1, op2; op2 = s.top(); s.pop(); op1 = s.top(); s.pop(); switch (c) { case '+': return op1 + op2; case..
https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 후위 표기식으로 바꾸는 방법은 저번에 작성했었다. 저것을 참고... 설명 -> https://non-stop.tistory.com/91 전체 코드 #include #include using namespace std; string str; int prec(char ch) { switch (ch) { case '+': case '-': return 1; case '*': case '/': retu..
https://www.acmicpc.net/problem/17299 17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 전체 코드 #include #include #include using namespace std; int N; int arr[1000001]; int res[1000001]; stack s; // 번호와 등장횟수 vector v; void solve() { //첫 시작은 무조건 오큰수가 없음. s.push(make_pair(v[N - 1], arr[v[N - 1]])); res[N - 1] = -1; for(i..
https://www.acmicpc.net/problem/2841 2841번: 외계인의 기타 연주 첫째 줄에 멜로디에 포함되어 있는 음의 수 N과 한 줄에 있는 프렛의 수 P가 주어진다. (N ≤ 500,000, 2 ≤ P ≤ 300,000) 다음 N개 줄에는 멜로디의 한 음을 나타내는 두 정수가 주어진다. 첫 번째 정수 www.acmicpc.net 전체 코드 #include #include using namespace std; int N, P; int res = 0; stack s[7]; int main(void) { cin >> N >> P; int a, b; for (int i = 0; i > a >> b; if (s[a].empty()) // 비었으면 그냥 누르기 { ..
https://www.acmicpc.net/problem/15486 15486번: 퇴사 2 첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net #include #include using namespace std; int T[1500001]; int P[1500001]; int dp[1500051]; int N,res=0; int main(void) { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N; for (int i = 1; i > T[i..
https://www.acmicpc.net/problem/1256 1256번: 사전 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 김진영 조교는 동호와 규완이에게 특별 과제를 주었다. 특별 과제는 특별한 문자열로 이루어 진 사전을 만드는 것이다. 사전에 수록되 www.acmicpc.net #include #include #include using namespace std; long long dp[101][101]; int N, M, K; string res = ""; long long Count(int a, int z) { if (a == 0 || z == 0) return 1; if (dp[a][z] != 0) return dp[a][z]; return dp[a][z] = min(Count..