본문 바로가기

백준7

백준 9934 C++ https://www.acmicpc.net/problem/9934 9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net 되게 이상한 규칙을 찾아서 재귀로 풀려고 했는데 틀렸다. #include #include #include using namespace std; /*처음에 상근이는 트리의 루트에 있다. 왼쪽을 먼저 방문한다. 그 다음 중앙 방문 오른쪽 방문 위로 이동 */ int k; // 1 2024. 3. 11.
백준 3197 C++ https://www.acmicpc.net/problem/3197 3197번: 백조의 호수입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 공간, 'L'은 백조가 있는 공간으로 나타낸다.www.acmicpc.net 처음으로 플레를 혼자서 풀어서 성공했다. 처음에 그냥 일반적으로 빙판이 녹는걸 생각해서 시간초과가 나타났다.치즈와 같은 문제에서는 이렇게하면 풀렸기 때문이다.#include #include using namespace std;const int MAX = 1500;bool meet = false;int r, c;int dy[] = { -1, 0, 1, 0 };int dx[].. 2024. 3. 6.
백준 4179 C++ https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 이거 생각보다 어려웠습니다... 처음에 조금이라도 메모리를 절약해보겠다고 visited를 사용하지 않고 if문을 엄청 꼬아서 하니까 어디서 반례가 나타나는지 모르겠어서 그냥 visited를 만들어서 했습니다. 최단 거리니까 BFS를 사용했고 다양한 반례에 대해서는 한번 직접 생각하시면서 해보시는게 나을거 같습니다. #include #include using namespace std.. 2024. 2. 20.
백준 17298 C++ https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 이 문제는 아이디어만 생각하면 굉장히 쉬운 문제가 된다. 처음에는 작은게 왼쪽, 큰게 오른쪽으로가는 이진 트리를 생각했다가 같은 값이 들어왔을 경우의 반례가 생겨서 계속 고민을 했다. 결국엔 Stack으로 풀면 된다. 비슷한 문제로는 균형잡힌 세상, 괄호가 있다. 처음부터 생각을 하진 못했다. 지금까지 Stack을 활용한 짝짓기 문제는 1:1로 대응됐기 때문이다. 하지만 이 문제부터 짝짓기는 1:1로 정의되.. 2024. 2. 14.