본문 바로가기

algorithm

(49)
[C++] BOJ 11657 타임머신 문제 백준 11657번 타임머신 https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 코드 #include #include using namespace std; #define INF 987654321 int m, n; long long dist[502] = { 0, }; vector bus[502]; int main() { //1번 도시 제외하고는 모두 infinity로 거리 설정 for ..
[C++] BOJ 11403 경로 찾기 문제 백준 11403번 https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 #include using namespace std; int n, arr[101][101]; int main() { cin >> n; for (int i = 1; i ans[i][j]; } } //k 경유 for (int k = 1; k
[C++] BOJ 2346 풍선 터뜨리기 문제 https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 첫째 줄에 자연수 N(1≤N≤1,000)이 주어진다. 다음 줄에는 차례로 각 풍선 안의 종이에 적혀 있는 수가 주어진다. 편의상 0은 적혀있지 않다고 가정하자. www.acmicpc.net 코드 #include #include using namespace std; int main() { int n; cin >> n; deque d; int arr[1005] = { 0 }; for (int i = 2; i arr[i]; cout 0) { cnt--; while (cnt--) { d.push_back(d.front()); d.pop_front(); } cnt = arr[d.front()]; cout
[C++] BOJ 1918 후위 표기식 문제 백준 1918번 후위 표기식 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net 코드 #include #include #include using namespace std; int main() { stackop;//연산자 string str; cin >> str; for (int i = 0; i < str.size(); i++) { if (str[i] == '(') {//괄호가 시작될 경우 op.push(str[i]); } else i..
[C++] BOJ 1158 요세푸스 문제 문제 백준 1158번 요세푸스 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 코드 #include #include using namespace std; int n, k; int main() { cin >> n >> k; deque d; for (int i = 1; i
[C++] BOJ 2161 카드1 문제 백준 2161번 카드1 https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 코드 #include #include using namespace std; int n; int main() { cin >> n; deque d; for (int i = n; i > 0; i--) d.push_front(i); while (!d.empty()) { cout
[C++] BOJ 10773 Zero That Out 문제 백준 10773 제로 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 코드 #include #include using namespace std; int k, num, sum; int main() { cin >> k; stacks; while (k--) { cin >> num; if (num == 0) { sum -= s.top(); s.pop(); } else { sum += num; s.push(num)..
[C++] BOJ 10828 스택 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 #include #include #include using namespace std; int n; int main(){ cin >> n; string str; stack s; while (n--) { cin >> str; if (str == "push") { int num; cin >> num; s.push(num); } else if (str == "pop") { i..