C++ 471

[G1] 백준 4991번 로봇 청소기 C++ 너비 우선 탐색, 비트마스

리뷰 https://www.acmicpc.net/problem/4991딱 한글자 차이로 계속 헛짓을 했다...  전역 변수n : 방의 세로 크기를 저장할 변수m : 방의 가로 크기를 저장할 변수lst : 맵 정보를 저장할 배열bits : 더러운 칸 정보를 저장할 배열v : 방문 배열을 저장할 배열Pos : 시뮬레이션에 사용할 정보를 정의할 구조체 위치 x, y, 소요 시간 t, 치운 쓰레기 정보 b를 저장한다.dx, dy : 4방향 탐색을 위한 방향 배열 함수1. bfsint bfs(int d, int sx, int sy) 더러운 칸을 모두 깨끗한 칸으로 만드는데 필요한 이동 횟수의 최솟값을 구하는 함수매개 변수로 최대 쓰레기 정보 d, 시작 위치 sx, sy를 전달받는다.Pos타입의 큐 q를 초기화 하..

[G3] 백준 1726번 로봇 C++ 다익스트라, 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/1726문제 조건을 잘 읽자..  전역 변수n : 맵의 세로 길이를 저장할 변수m : 맵의 가로 길이를 저장할 변수lst : 맵 정보를 저장할 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 시뮬레이션 시 사용할 구조체 좌표 x, y, 소요 시간 t, 방향 d를 정의한다. t를 기준으로 오름차순으로 정렬한다. 함수1. bfsint bfs() 시작 지점/방향 부터 목표 지점/방향 까지의 최단 경로를 구하기 위한 함수Pos타입의 우선순위 큐 pq를 초기화 한다.pq에 sx, sy, 0, sd를 push해준다, 변수의 경우 전위 감소 시켜주어 0-based-index를 적용해 주었다.n * m * 4 크기의 벡터 dist에 매우 큰 값을..

[G5] 백준 17836번 공주님을 구해라! C++ 다익스트라

리뷰 https://www.acmicpc.net/problem/17836(0, 0) 좌표에서 (N - 1, M - 1) 좌표까지 가는 최단거리를 구하는 문제단, 중간에 검을 획득할 경우 모든 벽을 부실 수 있다는 조건이 추가되어 있다.  전역 변수N : 맵의 세로 길이를 저장할 변수M : 맵의 가로 길이를 저장할 변수T : 제한 시간을 저장할 변수lst : 맵 정보를 입력 받아 저장할 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 현재 위치x, y와 시간 t, 검 획득 여부 k를 정의하기 위한 구조체, t를 기준으로 오름차순 정렬한다. 함수1. floodfillint floodfill() 플러드 필을 통해 2차원 맵에서 퍼져나가며 다익스트라로 최단 경로를 찾기 위한 함수Pos타입의 우선순위 ..

[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, ..

728x90