분류 전체보기 764

[G5] 백준 15662번 톱니바퀴 (2) C++ 덱, 구현, 시뮬레이션

리뷰 https://www.acmicpc.net/problem/15662톱니바퀴를 회전시켜 연쇄반응을 구현하는 문제  전역 변수t : 톱니바퀴의 개수를 저장할 변수k : 회전의 횟수를 저장할 변수flag : 회전 방향을 체크하기 위한 변수deq : 톱니바퀴의 상태를 저장할 덱 배열 함수1. turn_rightvoid turn_right(int idx) 톱니바퀴를 오른쪽으로 회전시키는 시뮬레이션을 진행할 함수매개 변수로 톱니바퀴의 번호 idx를 전달 받는다.톱니바퀴 번호가 idx인 덱에서 뒤의 요소를 뺀 뒤 앞의 요소로 집어넣는다.작업 후에는 flag를 반전시킨다. 2. turn_leftvoid turn_left(int idx) 톱니바퀴를 왼쪽으로 회전시키는 시뮬레이션을 진행할 함수매개 변수로 톱니바퀴의 ..

[S3] 백준 2149번 암호 해독 C++ 문자열, 정렬

리뷰 https://www.acmicpc.net/problem/2149실버 3 문제가 왜이리 어렵고 디버깅이 힘든지 모르겠다..  전역 변수a : 키를 저장할 변수b : 암호문을 저장할 변수IC : 인덱스 idx와 문자 ch, 문자열 str을 정의할 구조체ics : IC타입의 벡터 함수1. cmp_CHbool cmp_CH(const IC& left, const IC& right) 단어를 기준으로 오름차순 정렬하기 위한 함수 2. cmp_IDXbool cmp_IDX(const IC& left, const IC& right) 인덱스를 기준으로 오름차순 정렬하기 위한 함수 문제풀이a, b를 입력 받고, 키의 길이를 m, 각 키에 할당될 암호문의 길이를 n으로 초기화 한다.ics벡터를 m크기로 resize해주고..

[G4] 백준 14267번 회사 문화 1 C++ 세그먼트 트리, 느리게 갱신되는 세그먼트 트리, 오일러 경로 테크닉

리뷰 https://www.acmicpc.net/problem/14267더 쉬운 방법이 있는데 익숙한 방법으로 풀었다.  전역 변수N : 배열 크기 최대값을 저장할 상수 변수n : 직원의 수를 저장할 변수m : 칭찬의 수를 저장할 변수lst : 인접 리스트를 저장할 벡터 배열it : 오일러 경로의 진입 시간을 저장할 배열ot : 오일러 경로의 탈출 시간을 저장할 배열t : 오일러 경로의 시간을 저장할 변수tree : 세그먼트 트리 정보를 저장할 배열lazy : 업데이트 값 정보를 저장할 배열 함수1. dfsvoid dfs(int cur) 오일러 경로를 구하기 위한 함수매개 변수로 현재 직원의 번호를 전달 받는다.현재 직원의 it배열의 값에 t를 전위 증가한 값을 저장한다.현재 직원의 인접 리스트를 순회하..

[G3] 백준 2151번 거울 설치 C++ 다익스트라

리뷰 https://www.acmicpc.net/problem/2151최소한의 거울을 설치하여 한쪽 문에서 다른 문으로 이동하는 경로를 찾는 문제  전역 변수n : 맵의 가로/세로 길이를 저장할 변수sx, sy : 탐색을 시작할 문의 좌표를 저장할 변수ex, ey : 도착할 문의 좌표를 저장할 변수lst : 맵 정보를 저장할 문자열 배열bool : 설치한 거울의 개수로 방문 정보를 체크할 배열Pos : 시뮬레이션 시 사용할 현재 좌표 x, y, 현재 방향 d, 설치한 거울의 수 c를 정의할 구조체, c를 기준으로 오름차순 정렬해 준다.dx, dy : 4방향 탐색을 위한 방향 배열 함수1. dijkstraint dijkstra() 다익스트라를 사용해 출발 문에서 도착 문까지 이동할 때 최소 설치 거울의 개..

[G5] 백준 17396번 백도어 C++ 다익스트라

리뷰 https://www.acmicpc.net/problem/17396문제 조건을 읽고 분명 int로 터진다는건 알고 있었지만... 실수를 해서 두번이나 틀렸다. ㅠ  전역 변수N : 분기점의 최대 개수를 저장할 상수 변수n : 분기점의 개수를 저장할 변수m : 간선의 개수를 저장할 변수lst : 각 분기점이 시야에 노출되는지를 저장할 정수형 배열Edge : 간선 정보 중 다음 노드 nn, 간선의 가중치 nt를 정의할 구조체edges : 인접 리스트를 저장할 Edge타입 벡터 배열Pos : 시뮬레이션 시 사용할 현재 노드 cn, 현재 누적 시간 ct를 정의할 구조체, ct를 기준으로 오름차순 정렬한다. 함수1. dijkstrall dijkstra() 다익스트라를 통해 시야를 피해 넥서스 까지 가는 최단..

[G5] 백준 2866번 문자열 잘라내기 C++ 해시 맵, 매개 변수 탐색

리뷰 https://www.acmicpc.net/problem/2866행을 위에서 부터 한 줄씩 제거하며 같은 열에 있는 문자열의 중복이 없는 최대로 삭제가 가능한 행의 개수를 구하는 문제  전역 변수n, m : 테이블의 세로/가로 길이를 저장할 변수ans : 정답을 저장할 변수lst : 테이블 정보를 저장할 문자열 배열 함수없음  문제풀이n, m값을 입력 받고, n개의 문자열을 lst배열에 입력 받아준다.변수 l을 0으로, r을 n - 1로 초기화 하고, l이 r미만인 경우 true로 while루프를 실행해 준다.매 루프마다 변수 mid에 l + r을 2로 나눈 몫을 저장해 주고, string, bool타입 해시맵 v를 초기화 해준다.변수 flag를 true로 초기화 하고, 변수 s에 mid행 부터 마..

[G3] 백준 1520번 내리막 길 C++ 다이나믹 프로그래밍, 깊이 우선 탐색

리뷰 https://www.acmicpc.net/problem/1520DFS + DP를 활용하여 푸는 문제, 그냥 DFS로 접근했다가 시간 초과를 계속 받았다.  전역 변수n, m : 맵의 세로/가로 길이를 저장할 변수lst : 맵 정보를 저장할 2차원 배열v : 방문 처리를 위한 2차원 배열dp : 우하단으로 이동 가능한 경로의 개수를 저장할 2차원 배열dx, dy : 4방향 탐색을 위한 방향 배열 함수1. dfsint dfs(int x, int y) 너비 우선 탐색 + DP를 통해 우하단으로 이동 가능한 모든 경로의 개수를 구하는 함수첫 번째 기저 조건으로 맵의 우하단에 도달하였다면 1을 리턴해 준다.두 번째 기저 조건으로 이미 dp값이 저장되어 있다면 해당 값을 리턴해 준다.현재 좌표의 dp값을 0..

[G2] 백준 1039번 교환 C++ 너비 우선 탐색, 해시맵

리뷰 https://www.acmicpc.net/problem/1039문자열 내에서 문자를 정확히 k번 교환하며 최대값을 구하는 문제  전역 변수s : 시작 문자열을 저장할 변수ans : 정답 문자열을 저장할 변수k : 교환 횟수를 저장할 변수l : 시작 문자열의 길이를 저장할 변수v : 방문 여부를 체크할 key : 문자열, value : 논리형 해시맵 배열Info : 시뮬레이션 시 사용할 현재 문자열 cur, 바꾼 횟수 cnt를 정의할 구조체 함수1. bfsvoid bfs() 너비 우선 탐색을 통해 정확히 k번 문자를 교환했을 때의 최대값을 구하기 위한 함수Info 타입의 큐 q를 초기화 하고, 초기 문자열 s와 바꾼 횟수 0을 push해준다.v배열에 바꾼 횟수 0, 초기문자열 s에 대해 방문 처리를..

[G4] 백준 25682번 체스판 다시 칠하기 2 C++ 누적 합

리뷰 https://www.acmicpc.net/problem/256822차원 누적합 문제, 풀어보지 않은 유형이라 많이 고전했다.  전역 변수n, m : 맵의 세로/가로 크기를 저장할 변수k : 정사각형의 크기를 저장할 변수lst : 체스판의 정보를 입력 받을 문자열 배열 함수1. chkint chk(char col) 체스판에서 col로 시작하는 경우에 대해 다시 칠해야 하는 정사각형 개수의 최솟값을 찾는 함수매개 변수로 시작 지점의 색깔을 문자 변수 col로 입력 받는다.보드 정보를 값으로 변환하기 위한 2차원 벡터 vals를 n * m크기로 초기화 한다.누적합을 저장할 2차원 벡터 preSums는 n + 1 * m + 1크기로 초기화 한다.vals배열은 i + j가 홀수인 칸에는 lst배열에서 값이..

[G4] 백준 8983번 사냥꾼 C++ 이분 탐색

리뷰 https://www.acmicpc.net/problem/8983이분 탐색을 통해 잡을 수 있는 동물의 수를 O(LogN)에 구하는 문제 전역 변수m : 사대의 개수를 저장할 변수n : 동물의 수를 저장할 변수l : 사정거리를 저장할 변수ans : 정답을 저장할 변수lst : 사대의 위치 정보를 저장할 배열 함수없음  문제풀이m, n, l의 값을 각각 입력 받고, m개의 사대의 개수를 lst배열에 입력 받아준다.sort 함수를 통해 lst배열을 오름차순으로 정렬한다.n번의 while루프를 수행하고 매 루프마다 x, y좌표를 입력 받아준다.L을 0으로, R을 m - 1로 초기화 하고, L이 R 이하일 경우 while루프를 수행해 준다.매 루프마다 변수 MID에 L + R을 2로 나눈 몫을 저장해 준다..

728x90