C++ 475

[Lv3] 소프티어 택배 마스터 광우 C++ 백트래킹

리뷰 https://softeer.ai/practice/6273 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 기본적인 백트래킹 문제, 커스텀 TC를 만들어 제출할 때 최악의 경우 시간초과가 날 줄 알았는데 너무 악랄한 예제는 주지 않는 듯 하다.  전역 변수n : 레일의 개수를 저장할 변수m : 바구니에 담을 수 있는 최대 무게를 저장할 변수k : 작업을 진행할 횟수를 저장할 변수lst : 각 레일의 전용 무게를 저장할 배열v : 레일 선택 시 방문 처리를 진행할 배열stack : 선택한 레일의 인덱스를 저장할 정수형 벡터 함수1. btvoid bt(int level) 백트래킹을 통해 레일을 사용한 모든 경우의 수를 탐색하기 위한 함수매개 변수로 재귀 단계 level을 전달받는다..

[G5] 백준 16987번 계란으로 계란치기 C++ 백트래킹

리뷰 https://www.acmicpc.net/problem/16987계란끼리 부딪혀 최대한 많이 깰 수 있는 계란의 개수를 구하는 문제  전역 변수n : 계란의 개수를 저장할 변수ans : 깰 수 있는 최대 계란의 개수를 저장할 변수s : 계란의 내구도를 저장할 배열w : 계란의 무게를 저장할 배열 함수1. btvoid bt(int level) 백트래킹을 통해 계란을 깨는 모든 경우를 체크하기 위한 함수매개 변수로 현재 재귀 단계 및 손에 든 계란의 번호를 나타낼 level을 전달 받는다.기저 조건으로 level이 n이 도달했을 경우 내구도가 0이하인 계란의 개수를 구해 max를 최신화 하고 리턴한다.두 번째 기저 조건으로 만약 현재 계란의 내구도가 0이하일 경우 다음 계란으로 재귀를 진행한 후 빠져..

[G4] 백준 1662번 압축 C++ 스택

리뷰 https://www.acmicpc.net/problem/1662오랜만에 풀어본 스택 문제, 역시 스택 문제는 머리만으로 풀려고 하지 말고 디버깅이나 직접 그려가며 풀어야 하는 것 같다.  전역 변수s : 압축되지 않은 문자열을 저장할 변수Cstack : 문자 스택 정보를 저장할 변수Nstack : 정수 스택 정보를 저장할 변수(초기 크기 1, 값 0) 함수없음  문제풀이s를 입력 받고, s를 뒤에서 부터 탐색하는 for문을 개행해 준다.만약 현재 문자가 ')'라면 Nstack에 0을 추가해 준다.만약 현재 문자가 '('라면 Cstack에 '('를 추가해 준다.만약 현재 문자가 정수형 문자라면 두 가지 조건으로 나누어 로직을 처리해 준다.먼저 Cstack이 비지 않았다면('('가 존재 한다면) Cs..

[P4] 백준 5817번 고통받는 난쟁이들 C++ 세그먼트 트리

리뷰 https://www.acmicpc.net/problem/5817각 난쟁이의 키와 인덱스를 별도로 저장하고, max, min값의 세그먼트 트리를 통해 연속 여부를 체크하는 문제  전역 변수n : 난쟁이의 인원 수를 저장할 변수m : 쿼리의 개수를 저장할 변수N : 배열 및 트리의 최대 크기를 저장할 변수lst : 인덱스를 난쟁이의 키로, 값을 난쟁이의 위치로 저장할 정수형 배열idx : 인덱스를 난쟁이의 위치로, 값을 난쟁이의 키로 저장할 정수형 배열tree : 세그먼트 트리의 최대, 최소값 정보를 저장하기 위한 pair타입의 배열 함수1. buildvoid build(int node, int s, int e) 세그먼트 트리를 초기화 하기 위한 함수매개 변수로 노드 정보 node, 탐색 범위 s, ..

[G1] 백준 1208번 부분수열의 합 2 C++ 이분 탐색, upper_bound, lower_bound

리뷰 https://www.acmicpc.net/problem/1208이분 탐색을 통해 부분 수열의 합이 S인 경우의 수를 구하는 문제  전역 변수N : 수열의 길이를 저장할 변수S : 목표 값을 저장할 변수lst : 수열 정보를 입력 받을 배열L, R : 수열을 반으로 자르고 왼쪽, 오른쪽 부분수열의 합을 저장할 벡터 함수1. getSumvoid getSum(int s, int e, ll sum, vector& sums) 부분 수열의 합을 구하기 위한 함수매개 변수로 현재 지점 s, 마지막 지점 e, 누적 합 sum, 벡터 참조 sums를 전달받는다.기저 조건으로 s가 e보다 커졌을 경우 sums에 sum을 push해주고 리턴해 준다.기저 조건에 해당하지 않는다면 현재 값을 sum에 추가 하거나, 추가..

[P4] 백준 1280번 나무 심기 C++ 세그먼트 트리

리뷰 https://www.acmicpc.net/problem/1280세그먼트 트리를 활용하여 쿼리 순으로 배열 내 모든 요소와의 거리를 구하는 문제  전역 변수N : 좌표의 최대값을 저장할 정수형 변수MOD : 모듈러 값을 지정할 정수형 상수 변수n : 나무의 개수를 저장할 정수형 변수tree : 세그먼트 트리를 통해 구간 누적합과 누적 개수를 저장할 pair타입의 배열 함수1. updatevoid update(int node, int s, int e, ll idx) 나무를 심고 세그먼트 트리 정보를 업데이트 하는 문제매개 변수로 노드 정보 node, 탐색 범위 s, e, 나무의 좌표 idx를 전달받는다.기저 조건으로 리프 노드에 도달했을 경우 현재 노드에 나무의 위치와 개수를 증가시킨다.리프 노드가 ..

[P4] 백준 2517번 달리기 C++ 세그먼트 트리, 값/좌표 압축, 이분 탐색, 오프라인 쿼리

리뷰 https://www.acmicpc.net/problem/2517주어지는 값을 인덱스로 압축하여 세그먼트 트리의 노드로 관리하여 누적합을 구하는 문제  전역 변수n : 선수의 수를 저장하기 위한 정수형 변수lst : 선수의 평소 실력을 저장하기 위한 정수형 배열press : 선수의 실력 정보를 오름차순으로 정렬하기 위한 정수형 배열tree : 세그먼트 트리 정보를 저장하기 위한 정수형 배열 함수1. updatevoid update(int node, int s, int e, int idx) 세그먼트 트리 정보를 업데이트 하기 위한 함수매개 변수로 노드 정보 node, 탐색 범위 s, e, 업데이트 할 인덱스 idx를 전달 받는다.기저 조건으로 리프 노드에 도달한 경우 현재 노드 값을 1만큼 증가한다...

[G2] 백준 4195번 친구 네트워크 C++ 유니온-파인드, 해시맵

리뷰 https://www.acmicpc.net/problem/4195해시맵을 사용해 문자열을 key로 그룹을 구분하고, 매 번 Union처리 후 그룹의 크기를 구해주는 문제항상 정수로 그룹을 구분했던 문제에 비해 신박했던 문제  전역 변수t : 테스트 케이스의 개수를 저장할 정수형 변수f : 각 테스트 케이스 마다 친구 관계의 개수를 저장할 정수형 변수G : 그룹의 크기를 나타내기 위한 해시맵F : 그룹의 루트를 저장하기 위한 해시맵 함수1. Findstring Find(const string& a) 현재 a가 속한 그룹의 루트의 이름을 구하기 위한 함수매개 변수로 탐색을 진행할 친구의 이름 a를 전달 받는다.만약  F[a]가 a와 같다면 a를 리턴해 준다.아니라면 F[a]를 Find함수에 F[a]를 ..

[G2] 백준 3109번 빵집 C++ 깊이 우선 탐색, 그리디 알고리즘

리뷰 https://www.acmicpc.net/problem/3109맵의 범위가 10000 * 500으로 DFS를 활용할 경우 시간 초과가 날 것을 우려했다.하지만 파이프라인의 경로가 겹칠 수 없다는 조건이 있기에 그리디 하게 문제를 풀이할 수 있었다.  전역 변수r : 맵의 세로 길이를 저장할 정수형 변수c : 맵의 가로 길이를 저장할 정수형 변수ans : 정답을 저장하고 출력하기 위한 정수형 변수lst : 맵 정보를 저장하기 위한 문자열 타입의 배열v : 방문 정보를 저장하기 위한 논리형 2차 배열dx, dy : 우상향, 우향, 우하향을 진행하기 위한 방향 배열 함수1. dfsbool dfs(int cx, int cy) 깊이 우선 탐색을 통해 가스관부터 빵집 까지의 파이프라인 연결이 가능한지를 체크..

[G3] 백준 9344번 도로 C++ 최소 스패닝 트리, MST

리뷰 https://www.acmicpc.net/problem/9344MST가 보장될 때 특정 간선이 MST에 포함되는지 여부를 체크하는 문제  전역 변수t : 테스트 케이스의 개수를 저장할 정수형 변수n : 각 테스트 케이스 마다 도시의 개수를 저장할 정수형 변수m : 각 테스트 케이스 마다 도로의 개수를 저장할 정수형 변수p, q : 각 테스트 케이스 마다 도로가 MST에 포함되는지 여부를 결정할 두 도시의 번호를 저장할 정수형 변수nodes : 각 도시의 그룹화를 진행하기 위한 정수형 배열Edge : 간선 정보를 정의하기 위한 구조체 두 노드 정보 cn, nn와 가중치 w를 갖고, w기준으로 오름차순으로 정렬하는 operator 함수를 정의해 준다. 함수1. Findint Find(int a) 현재..

728x90