분류 전체보기 788

[G2] 백준 10775번 공항 C++ 그리디 알고리즘, set, 이진 탐색

리뷰 https://www.acmicpc.net/problem/10775set과 upper_bound를 활용한 그리디 문제  전역 변수g : 게이트의 수를 저장할 변수p : 비행기의 수를 저장할 변수ans : 정답을 저장할 변수dic : 게이트의 상태를 저장할 정수형 집합 함수없음  문제풀이g, p에 값을 입력 받고, dic에 1 ~ g까지의 정수를 insert해준다.p번의 while루프를 개행해 주고, 매 루프마다 게이트 번호를 입력 받아준다.upper_bound 함수를 통해 dic에서 gate보다 큰 값의 이터레이터를 it에 저장해 준다.만약 it이 dic의 begin이라면 ans를 출력하고 main함수를 리턴해 준다.아니라면 dic에서 it의 앞쪽 데이터를 erase처리해 주고, ans를 1만큼 증..

[P3] 백준 16404번 주식회사 승범이네 C++ 세그먼트 트리, 느리게 갱신되는 세그먼트 트리, 오일러 경로 테크닉

리뷰 https://www.acmicpc.net/problem/16404dfs로 부사수를 인덱스로 구간합 세그먼트 트리를 구현하고, 구간 업데이트를 통해 특정 노드의 값을 구하는 문제  전역 변수N : 배열 크기의 최대값을 저장할 상수 변수n : 직원의 수를 저장할 변수m : 쿼리의 수를 저장할 변수it : 오일러 경로의 inTime을 기록할 배열ot : 오일러 경로의 outTime을 기록할 배열t : 오일러 경로를 구할 때 시간으로 사용할 변수tree : 세그먼트 트리 정보를 저장할 배열lazy : 구간 업데이트 값을 저장할 배열child : 자식의 인덱스 값을 저장할 벡터 배열 함수1. dfsvoid dfs(int cur) 깊이 우선 탐색을 통해 각 사원의 it와 ot를 구하기 위한 함수매개 변수로 ..

카테고리 없음 2025.02.09

[G5] 백준 20008번 몬스터를 처치하자! C++ 백트래킹

리뷰 https://www.acmicpc.net/problem/20008스킬을 사용해 가장 빠른 시간 내에 몬스터를 처치하는 시간을 구하는 문제  전역 변수n : 스킬의 개수를 저장할 변수ans : 몬스터를 처치한 가장 빠른 시간을 저장할 변수T : 스킬의 사용이 가능한 시간을 저장할 배열Skill : 스킬의 쿨타임 ct와 데미지 dam을 정의할 구조체skills : 스킬 정보를 담기 위한 Skill타입 배열 함수1. btvoid bt(int level, int remain) 백트래킹을 통해 스킬을 사용해 몬스터를 공격하는 경우의 수를 구하는 함수매개 변수로 재귀 레벨(소요 시간), 몬스터의 남은 체력 remain을 전달받는다.첫 번째 기저 조건으로 level이 ans이상일 경우 더 이상 탐색할 필요가 ..

[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만큼 증가한다...

728x90