분류 전체보기 794

[G5] 백준 1052번 물병 C++ 그리디 알고리즘, 비트마스킹

리뷰 https://www.acmicpc.net/problem/1052문제 지문이 살짝 모호하고, 정답이 0이 나오는 엣지 케이스를 처리하지 못해 계속 Fail을 받았었다.  전역 변수n : 물병의 개수를 저장할 변수k : 한 번에 옮길 수 있는 물병의 제한을 저장할 변수 함수없음  문제풀이n, k에 값을 입력 받고, 변수 cnt, ans를 0으로 초기화 해준다.31부터 0까지 감소하는 for문을 개행해 준다.만약 n의 비트가 1을 왼쪽으로 i만큼 쉬프트한 값과 비트가 같을 경우 n에서 1 cnt를 증가시키고, cnt가 k이며 n이 아직 존재할 경우 ans에 1 ans에 저장된 값을 출력해 준다. 트러블 슈팅만약 정답이 없을 경우에는 -1을 출력한다. 라는 의미가 구매할 물병이 없을 경우, 즉 ans가 ..

[G2] 백준 2211번 네트워크 복구 C++ 다익스트

리뷰 https://www.acmicpc.net/problem/2211처음엔 MST로 접근했는데 MST로는 해결이 불가능한 문제인 것 같다.다익스트라 및 경로 복구 방식을 사용하여 AC를 받았다.  전역 변수n : 컴퓨터의 개수를 저장할 변수m : 간선의 개수를 저장할 변수Edge : 간선 정보 중 이동할 컴퓨터 번호 next, 가중치 val을 정의할 구조체edges : 간선 정보를 저장할 벡터 배열Info : 시뮬레이션 시 사용할 현재 컴퓨터 번호 cur, 누적 가중치 pre_val을 정의할 구조체, pre_val기준 오름차순 정렬한다. 함수1. dijkstravoid dijkstra() 다익스트라를 통해 모든 컴퓨터를 연결하는 최단 경로를 구하고 그 간선 정보를 출력할 함수Info타입의 우선순위 큐 ..

[G4] 백준 10282번 해킹 C++ 다익스트

리뷰 https://www.acmicpc.net/problem/10282간단한 다익스트라를 통해 최단 시간을 찾는 문제  전역 변수t : 테스트 케이스의 개수를 저장할 변수n : 컴퓨터의 개수를 저장할 변수d : 의존성의 개수를 저장할 변수c : 해킹당한 컴퓨터의 번호를 저장할 변수edges : 간선 정보를 저장할 2차원 벡터Pos : 시뮬레이션에 사용할 노드 번호 node, 진행 시간 t를 정의할 구조체, t를 기준으로 오름차순 정렬한다. 함수1. dijkstrapair dijkstra() 다익스트라를 통해 감염된 컴퓨터의 개수와 마지막 컴퓨터가 감염되기까지 걸리는 시간을 구하기 위한 함수Pos타입의 우선순위 큐 pq를 초기화 하고, 초기 감염된 컴퓨터 c와 시작 시간 0을 push해준다.n + 1크기..

[S3] 백준 26169번 세 번 이내에 사과를 먹자 C++ 너비 우선 탐색, 비트마스킹

리뷰 https://www.acmicpc.net/problem/26169백트래킹 문제이긴 한데.. BFS로 풀려고 시도했다, 결과는 성공  전역 변수sx, sy : 시작 위치를 저장할 변수lst : 맵 정보를 저장할 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 위치 x, y, 먹은 사과의 개수 c, 소요 시간 t, 방문 정보 b를 정의할 구조체 함수1. bfsint bfs() 너비 우선 탐색을 통해 3턴 이내로 사과 2개를 먹을 수 있는지 여부를 체크하기 위한 함수Pos타입의 큐 q를 초기화 하고, 시작 위치 sx, sy, 먹은 사과 0, 소요 시간 0, 방문 정보 2^nx * 5 + ny를 push한다.q가 빌 때 까지 while루프를 수행하고, 매 루프마다 요소를 한개씩 꺼내어 준다.첫..

[P5] 백준 11003 최소값 찾기 C++ 덱, 모노토닉 큐

리뷰 https://www.acmicpc.net/problem/11003O(NLogN)으로 해결될 줄 알았는데 10%에서 계속 시간 초과가 출력되었다.  전역 변수n : 수의 개수를 저장할 변수l : 탐색 구간의 길이를 저장할 변수VI : 값 val과 인덱스 idx를 정의하기 위한 구조체deq : VI타입의 덱 함수없음  문제풀이n, l값을 입력 받고, n번의 반복문을 수행해 준다. 매 루프마다 변수 a에 값을 입력 받는다.deq이 비지 않았고, deq의 맨 뒤의 요소의 값이 a보다 크거나 같으면 뒤에서 요소를 뺴내어 준다.덱의 맨 뒤에 현재 a의 값과 인덱스를 같이 저장해 준다.deq이 비지 않았고, deq의 맨 앞의 요소의 인덱스가 i - 1보다 작거나 같으면 앞에서 요소를 빼내어 준다.현재 deq의..

[G3] 백준 16988번 Baaaaaaaaaduk2 (Easy)

리뷰 https://www.acmicpc.net/problem/16988백트래킹 + 너비 우선 탐색을 통해 해결한 문제  전역 변수n, m : 맵의 세로/가로 길이를 저장할 변수ans : 정답을 저장할 변수lst : 초기 맵 정보를 저장할 2차 배열bool : 방문 여부를 체크할 2차 배열Pos : 시뮬레이션 시 사용하기 위한 구조체, 위치 정보 x, y를 정의한다.dx, dy : 4방향 탐색을 위한 방향 배열 함수1. btvoid bt(int level, int x, int y) 백트래킹을 통해 흰색 돌을 둘 수 있는 모든 경우를 구하는 함수매개 변수로 재귀 단계 level, 이전에 돌을 둔 위치 x, y를 전달 받는다.기저 조건으로 재귀 단계가 2에 도달한 경우 solve함수를 호출하고, 리턴 값과 ..

[S2] 백준 24444번 알고리즘 수업 - 너비 우선 탐색 1 C++ 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/24444양방향 간선...!!!!!!!  전역 변수N : 배열의 최대 크기를 저장할 상수 변수n : 노드의 개수를 저장할 변수m : 간선의 개수를 저장할 변수r : 시작 노드를 저장할 변수it : 정점에 도착한 시간을 기록할 배열v : 방문 체크를 진행할 배열lst : 인접 리스트를 저장할 트리 집합 배열 함수1. bfsvoid bfs() 너비 우선 탐색을 통해 각 정점에 도착한 시간을 기록하는 함수정수형 큐 q를 초기화 하고, 시작 노드 r을 push해준다.시간을 기록할 변수 t를 1로 초기화 하고, it배열의 r인덱스에 t를 저장 후 후위 증가시켜 준다.v배열을 통해 r번 노드에 방문처리를 진행해 준다.q가 빌 때 까지 while루프를 수..

[자료 구조] 멀티셋 C++

개요C++에서의 멀티셋은 STL에서 제공하는 연관 컨테이너로, 중복된 키 값을 허용하는 특징이 있다.주요 특징은 하기와 같다.자동 정렬: 원소들이 자동으로 정렬됨중복 허용: 같은 값을 여러 번 저장 가능검색 효율: 이진 탐색 트리 기반으로 구현되어 있어 검색이 효율적 (O(log n))불변성: 한번 삽입된 원소의 값을 직접 수정할 수 없음멀티셋은 중복된 데이터를 유지하면서 정렬이 필요한 경우에 유용하다.예를 들어 빈도수 계산, 정렬된 데이터에서 중복을 허용하는 경우, 우선순위가 같은 항목들을 관리할 때이다. 구조체를 통한 operator함수 또한 적용이 가능하다.삼성 SW 역량평가 B형을 준비할 때 기출문제를 풀며 얻었던 지식에 관해 짧게 작성해 보겠다.  멀티셋을 이용한 데이터 관리#include#in..

자료 구조 2025.02.17

[G5] 백준 19641번 중첩 집합 모델 C++ 트리, 오일러 경로 테크닉, 트리셋

리뷰 https://www.acmicpc.net/problem/19641오일러 경로 테크닉의 기초적인 문제이다.  전역 변수N : 배열 크기의 최대 값을 저장할 상수 변수n : 정점의 개수를 저장할 변수s : 트리의 루트를 저장할 변수lst : 인접 리스트를 저장할 정수형 트리셋 배열it : inTime을 저장할 배열ot : outTime을 저장할 배열t : Time을 저장할 변수v : 방문 여부를 체크할 배열 함수1. dfsvoid dfs(int node) 깊이 우선 탐색을 통해 it, ot배열을 초기화 하기 위한 함수매개 변수로 현재 노드의 번호 node를 전달 받는다.it배열의 node인덱스에 t를 전위증가 시킨 값을 저장한다.node의 인접 리스트를 순회하며 방문처리가 되어 있지 않으면 방문처리 ..

[G1] 백준 23817번 포항항 C++ 너비 우선 탐색, 백트래킹

리뷰 https://www.acmicpc.net/problem/23817비트마스킹으로 접근했다가 시간 초과를 맞고, BFS + 백트래킹 구조로 접근하니 AC를 받았다.하지만 실행 시간이 너무 긴 것 같아 만족스럽지는 못한 풀이  전역 변수n, m : 맵의 세로/가로의 길이를 저장할 변수idx : 식당의 인덱스를 저장할 변수ans : 정답을 저장할 변수lst : 맵 정보를 정수로 치환할 2차원 배열v : 맵의 방문 여부를 체크할 2차원 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 시뮬레이션 시 사용할 위치 x, y와 소요 시간 t를 정의할 구조체Edge : 간선 저장 시 사용할 식당의 인덱스 idx와 거리 t를 정의할 구조체edges : 인접 리스트를 저장할 Edge타입 벡터의 배열start..

728x90