[백준 4949번] 균형잡힌 세상
·
알고리즘 문제풀이/백준
문제 링크:https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net 문자열에서 괄호를 제외한 다른 문자들은 무시하고 괄호만 확인해서 괄호들이 짝이 맞는지만 확인하면 됩니다. [괄호 쌍 체크] 문자를 하나씩 확인해서 1. 여는 괄호 일 때 괄호를 스택에 push 2. 닫는 괄호 일때 스택의 top이 가리키는 괄호와 같으면 pop, 다르면 짝이 안 맞으므로 False 순회를 마쳤을 때 스택이 비어있으면 True, 비어있지 않으면 False 1..
[백준 5430번] AC
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제 풀이 [주의 1] R 연산을 할 때마다 reverse 함수를 사용하면 시간 초과가 납니다. 왜냐하면 reverse 함수가 O(N)의 시간복잡도가 걸리니깐 전체 O(n * len(p))의 시간복잡도가 걸립니다. p의 길이가 0
[백준 2164번] 카드2
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제 풀이 숫자 카드를 위 그림과 같이 큐에 넣고 큐의 크기가 1이 될 때까지 다음을 반복하면 됩니다. first 원소를 pop 그 다음 first원소를 push + pop 큐, 자료구조 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include #include using namespace std; int main(..
[백준 6198번] 옥상 정원 꾸미기
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/6198 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으 www.acmicpc.net [문제 풀이] 스택, 자료구조 예) N=6, H = {10, 3, 7, 4, 12, 2}인 경우 = = = = - = = = = -> 관리인이 보는 방향 = - = = = = = = = = = 10 3 7 4 12 2 -> 빌딩의 높이 [1][2][3][4][5][6] -> 빌딩의 번호 먼저 크기가 N인 배열을 준비합니다. arr[i]는 i번째 빌딩을 바라보는 관리자들의 수가 ..
[백준 2493번] 탑
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제 풀이 첫 번째 탑에서 시작해서 탑을 두 개씩(i, i+1) 이용하면 스택으로 문제를 해결할 수 있습니다. 스택을 하나 준비해서 탑의 번호를 저장합니다 이때 스택의 top()은 i번쨰 탑이 레이저를 발사했을 때 수신받을 수 있는 가장 가까운 탑입니다. 수신받을 수 있는 탑이 없는 경우는 높이가 0인 0번째 탑이 존재한다고 생각하고 0번째 탑이 수신하도록 하면 됩니다. 이제 i번째..
[백준 3273번] 두 수의 합
·
알고리즘 문제풀이/백준
문제 링크:https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 시간제한이 1초이고 N < 10^6 이므로 O(N^2) 풀이는 시간 초과입니다. 수열을 하나씩 꺼내보면서, 꺼낸 수와 합이 X가 되도록 하는 수열 내의 다른 어떤 수가 존재하는지 확인할 수 있으면 O(N)의 시간 복잡도로 문제를 해결할 수 있습니다. 수열에서 하나씩 꺼내서 X에서 뺀 뒤 그 수가 수열 내에 존재하는지 확인하면 됩니다..
[백준 10871번] X보다 작은 수
·
알고리즘 문제풀이/백준
문제 링크:https://www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 입력받은 수를 X보다 작으면 출력하면 되는 문제입니다. 수학, 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include using namespace std; int main(void){ ios::sync_with_stdio(false); cin.tie(nullptr); int N, X; cin>>N>>X; for(int i=0; i>data;..
[백준 1197번] 최소 스패닝 트리
·
알고리즘 문제풀이/백준
문제 링크: www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 � www.acmicpc.net Union-Find 알고리즘을 이용해서 기본적인 크루스칼 알고리즘을 구현하면 되는 문제입니다. 최소 스패닝 트리, 크루스칼 알고리즘 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44..