C++ 470

[G4] 백준 13397번 구간 나누기 2 C++ 이분 탐색, 매개 변수 탐색

리뷰 https://www.acmicpc.net/problem/13397파라매트릭 서치의 기본이 되는 문제  전역 변수n : 배열의 크기를 저장할 변수m : 구간의 개수를 저장할 변수ans : 정답을 저장할 변수lst : 배열 정보를 저장할 정수형 배열 함수없음  문제풀이n, m값을 입력 받고, lst배열에 n개의 배열 요소를 입력받아 준다.l을 0, r을 10000으로 초기화 해주고 l이 r보다 이하일 경우 while루프를 반복해 준다.정수형 변수 mid를 l + r을 2로 나눈 값으로 저장해 준다.구간의 개수 cnt를 1로, 최대 및 최소값 MAX, MIN을 lst배열의 첫 인자로, diff를 MAX-MIN값으로 초기화 한다.배열의 두번째 요소부터 마지막 요소까지 for문을 통해 순회해 준다.현재 요..

[G3] 백준 10423번 전기가 부족해 C++ 최소 신장 트리, 유니온-파인드, 정렬

리뷰 https://www.acmicpc.net/problem/10423오랜만에 풀어본 MST문제, 이미 그룹화 된 정보가 주어졌을 때의 MST의 기본적인 문제이다.  전역 변수n : 도시의 개수를 저장할 변수m : 설치 가능한 케이블의 수를 저장할 변수k : 발전소의 개수를 저장할 변수nodes : 그룹화를 저장하기 위한 정수형 배열Edge : 간선의 정보를 나타낼 구조체, 현재 노드 cn, 다음 노드 nn, 가중치 w로 정의하며 가중치 기준 오름차순 정렬 함수1. Findint Find(int a) 현재 노드가 어느 그룹에 속해있는지를 찾기 위한 함수매개변수로 노드 번호 a를 전달받는다.기저 조건으로 만약 a가 속한 그룹이 a 자신일 경우 a를 리턴해 준다.아닐 경우 a가 속한 그룹이 최신이 되도록 ..

[G1] 백준 16933번 벽 부수고 이동하기 3 C++ 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/16933벽 부수고 이동하기 문제 중 가장 어려웠던 문제  전역 변수n : 맵의 세로 변의 길이를 저장할 변수m : 맵의 가로 변의 길이를 저장할 변수k : 벽을 부술 수 있는 횟수를 저장할 변수v : 방문 처리를 진행하기 위한 논리형 3차 배열Pos : 시뮬레이션에 사용할 구조체 위치 좌표 x, y와 소요 시간 t, 벽을 뚫은 횟수 t, 낮/밤 정보 w를 정의한다.dx, dy : 4방향 탐색을 위한 방향 배열 함수1. printvoid print(int cx, int cy, int ct, int ck, int cw) { for (int i = 0; i  디버깅용 함수Pos의 인자들을 매개변수로 입력 받는다.기본적으로 맵 정보를 출력하고, 현..

[G4] 백준 22856번 트리 순회 C++ 깊이 우선 탐색, 트리

리뷰 https://www.acmicpc.net/problem/22856중위 우선 순회를 통해 마지막 노드를 구한 후 주어진 조건에 따라 트리를 탐색하는 횟수를 구하는 문제전위, 중위, 후위 탐색의 개념을 너무 오랜만에 접해서 문제 이해가 좀 힘들었다.  전역 변수Child : 현재 노드의 좌 우 자식 노드를 정의하기 위한 구조체v : 노드 방문 처리를 위한 논리형 배열par : 부모 노드 정보를 저장하기 위한 정수형 배열n : 주어지는 노드의 개수를 저장할 변수en : 중위 순회의 마지막 노드를 저장하기 위한 변수ans : 정답을 저장하기 위한 변수nodes : 자식 정도를 저장하기 위한 Child 타입의 벡터lst : 인접 리스트를 저장하기 위한 정수형 벡터 배열 함수1. find_endvoid fi..

[P4] 백준 18135번 겨울나기 C++ 세그먼트 트리, 느리게 갱신되는 세그먼트 트리

리뷰 https://www.acmicpc.net/problem/18135오랜만에 풀어본 Lazy Propagation문제, 그룹화 라는 요소가 추가되어 있다.생각보다 지문이 길어서 문제에 대한 정확한 이해 후에 제출하는 것을 추천한다.  전역 변수N : 산책로 칸의 최대값을 저장하기 위한 정수형 상수 변수M : 구역의 최대값을 저장하기 위한 정수형 상수 변수n : 산책로 칸의 개수를 저장할 변수m : 구역의 개수를 저장할 변수lst : 초기 구역의 상태를 저장하기 위한 정수형 배열g : 각 산책로 칸의 그룹 번호를 저장하기 위한 정수형 배열tree : 세그먼트 트리를 구현하기 위한 정수형 배열lazy : 누적 된 업데이트 값을 저장하기 위한 정수형 배열 함수1. buildvoid build(int nod..

[P5] 백준 2568번 전깃줄 - 2 C++ LIS, 이분 탐색

리뷰 https://www.acmicpc.net/problem/2568lower_bound를 통해 가장 긴 증가하는 부분 수열을 구하고 경로 역추적을 해줘야 하는 문제4달 전엔 경로 역추적에 대한 지식이 없어 틀렸으나 다시금 보니 문제 풀이가 가능했다. 골드 전깃줄 문제에 비해 티어가 훨씬 높으며 경로 역추적을 모른다면 어떻게 풀어야 할지 모르겠다.[G5] 백준 2565번 전깃줄 C++ LIS, 이분 탐색 [G5] 백준 2565번 전깃줄 C++ LIS, 이분 탐색리뷰 https://www.acmicpc.net/problem/2565알고리즘 분류는 DP로 되어 있지만 기본적인 LIS(가장 큰 증가하는 수열) 문제이다.  전역 변수n : 주어지는 전깃줄의 개수를 저장할 변수ans : 정답을 저장할 변zzzz..

[G5] 백준 2565번 전깃줄 C++ LIS, 이분 탐색

리뷰 https://www.acmicpc.net/problem/2565알고리즘 분류는 DP로 되어 있지만 기본적인 LIS(가장 큰 증가하는 수열) 문제이다.  전역 변수n : 주어지는 전깃줄의 개수를 저장할 변수ans : 정답을 저장할 변수 함수없음  문제풀이n값을 입력 받고, pair(이후 pii) 타입의 오름차순 우선순위 큐 pq를 초기화 한다.n개의 전깃줄 정보를 입력 받고, 전깃줄 A의 위치와 B의 위치를 묶어 pq에 push한다.정수형 벡터 lis를 초기화 한다.pq가 빌 때 까지 while루프를 실행하고, 매 루프마다 요소를 한개씩 꺼내준다.lower_bound 메서드를 통해 lis에 현재 요소의 B전깃줄의 위치 이상의 값이 있는지 찾아준다.만약 존재하지 않는다면, lis에 B전깃줄의 위치를 ..

[G4] 백준 17425번 약수의 합 C++ 누적 합

리뷰 https://www.acmicpc.net/problem/17425약수의 합의 누적합을구하는 문제  전역 변수N : n의 최대값을 정의할 정수형 상수 변수t : 테스트 케이스의 개수를 저장할 변수n : g(N)을 구하기 위한 인덱스를 저장할 변수 함수없음  문제풀이약수의 합을 저장할 long long타입의 벡터 F를 N크기로, 모든 값은 1인 상태로 초기화 한다.2부터 N - 1까지의 수를 순회하며 자신의 배수인 수에 자기 자신을 더해준다.long long타입의 벡터 G를 N크기로 초기화 해준다.1부터 N - 1까지의 수를 순회하며 벡터 G에 누적합을 저장해 준다.t를 입력 받고, t번의 while루프를 순회해 준다.매 루프타마다 n에 값을 입력 받고, G의 n번 인덱스 값을 출력해 준다. 트러블 ..

[D4] SWEA 4111번 무선 단속 카메라 C++ 그리디 알고리즘

리뷰 https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 이분 탐색으로 접근했다가 틀리고 그리디로 접근했더니 AC를 받은 문제 백준에 동일한 문제가 존재한다. 1 + 1 문제[G5] 백준 2212번 센서 C++ [G5] 백준 2212번 센서 C++리뷰 https://www.acmicpc.net/problem/2212고속도로에 집중국을 적절히 배치해서 수신 가능 센서 영역의 길이의 합이 최소가 되게 하는 문제2일간 문제를 고민했는데 적절한 방법이 떠올라 적용했더니 ACzzzz955.tistory.com  전역..

[G4] 백준 16120번 PPAP C++ 스택, 문자열

리뷰 https://www.acmicpc.net/problem/16120스택을 활용하여 주어진 문자열이 PPAP 문자열인지 체크하는 문제문제를 이해하기 좀 힘들었으나 그냥 PPAP를 P로 치환 할 수 있다는 조건이 있는 문제이다.  전역 변수s : PPAP문자열인지 검사할 문자열을 저장할 변수stack : 스택으로 사용할 문자열 함수1. PPAPvoid PPAP() 스택의 맨 뒤 문자열이 PPAP인지 체크하는 함수스택의 크기가 4이상, 스택의 맨 뒤 4글자가 "PPAP"라면 while루프를 계속 돌아준다.while 조건이 참이라면 스택에서 4개의 요소를 pop해준다.pop이 완료된 후에는 'P'를 스택의 맨 뒤에 삽입해 준다.  문제풀이문자열 s를 입력 받고, s의 크기만큼 for문을 개행해 준다.sta..

728x90