분류 전체보기 763

[G5] 백준 2096번 내려가기 C++ 다이나믹 프로그래밍

리뷰 https://www.acmicpc.net/problem/2096메모리 제한이 4MB인 문제  전역 변수N : 행의 최대 길이를 저장할 상수 변수n : 행의 길이를 저장할 변수lst : 수 정보를 저장할 배열dp : 최소 및 최대값을 저장할 배열pre : 이전 dp값을 저장할 배열 함수없음  문제풀이n을 입력 받고, n * 3크기의 숫자를 입력 받아 lst배열에 저장한다.첫 행에 저장된 수를 dp배열에 초기화 해준다.1 ~ n - 1행을 순회하며 각 dp의 열에 저장된 값을 pre배열에 복사해 준다.다시 3개의 열을 순회하며 각각 이동할 수 있는 위치 중 최소값 및 최대값을 갱신해 준다.모든 탐색을 마친 후 dp배열의 0번 인덱스의 3열 중 가장 큰 값을 출력해 주고, 공백으로 구분해 준다.dp배열..

[G5] 백준 23747번 와드 C++ 플러드 필, 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/23747맵이 두개인 이세계 대환장 문제, 메타버스 느낌이 들어 재밌었다.  전역 변수n, m : 맵의 세로/가로 길이를 저장할 변수sx, sy : 초기 위치에서 이세계의 이동 좌표를 저장할 변수lst : 이세계 맵 정보를 저장할 배열orders : 한별이의 여행 기록을 저장할 변수ans : 현실세계 맵 정보를 저장할 배열v : 방문 정보를 저장할 배열dx, dy : 4방향 탐색을 위한 방향 배열Pos : 플러드 필을 할 때 위치 정보 x, y를 정의할 구조체 함수1. floodfillvoid floodfill() 플러드 필을 통해 같은 그룹의 시야를 밝히기 위한 함수Pos타입의 큐 q를 초기화 하고, 현재 위치 sx, sy를 push해준다...

[G3] 백준 1941번 소문난 칠공주 C++ 백트래킹, 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/1941백트래킹을 통해 조합을 찾고, 해당 조합이 유효한지 검증하는 문제  전역 변수ans : 정답을 저장할 변수lst : 학생의 파를 저장할 배열choose : 선택한 학생번호를 저장할 벡터way : 갈 수 있는 학생인지 여부를 저장할 2차원 배열v : 방문했던 학생인지 여부를 저장할 2차원 배열pick : 선택한 학생인지를 저장할 벡터dx, dy : 4방향 탐색을 위한 방향 배열Pos : 위치 정보 x, y를 정의할 구조체 함수1. btvoid bt(int level, int cnt) 7명의 학생을 선택하는 조합을 찾는 함수매개 변수로 선택 가능한 학생의 시작 번호 level, 선택한 학생의 수 cnt를 전달 받는다.기저 조건으로 cnt가..

[G3] 백준 23084번 IUPC와 비밀번호 C++ 문자열, 슬라이딩 윈도우

리뷰 https://www.acmicpc.net/problem/23084암호화 조건을 반대로 생각해서 복호화 하는 논리적으로 접근하기 좋은 문제  전역 변수s, t : 비밀번호와 비밀번호 후보 문자열을 저장할 변수n : 후보 문자열이 주어지는 횟수를 저장할 변수sl, tl : 비밀번호와 비밀번호 후보 문자열의 길이를 저장할 변수sc : 비밀번호의 문자 개수를 저장할 배열tc : 비밀번호 후보의 문자 개수를 저장할 배열 함수1. chkbool chk() 비밀번호와 현재 완성된 비밀번호 후보의 개수 차이를 체크할 함수변수 diff를 0으로 초기화 하고, 각 문자의 개수 차이를 diff에 더해준다.diff의 차이가 2를 초과한 경우 false를, 아닌 경우 true를 리턴해 준다. 문제풀이s, n값을 입력 받..

[G4] 백준 30827번 회의실 배정 C++ 정렬, 멀티셋, 그리디 알고리즘

리뷰 https://www.acmicpc.net/problem/30827다시는 경험하고 싶지 않은 문제  전역 변수N : 회의의 수의 최대값을 저장할 상수 변수n : 회의의 개수를 저장할 변수k : 회의실의 개수를 저장할 변수ans : 정답을 저장할 변수P : 시작 시간 st와 종료 시간 et를 정의할 구조체, et가 같다면 st를, 아니라면 et를 기준으로 오름차순 정렬한다.lst : 회의의 정보를 저장할 P타입 배열 함수없음  문제풀이n, k값을 입력 받고, n개의 회의 정보를 입력 받아 lst배열에 저장해 준다.sort 메서드를 통해 lst배열을 operator 비교 함수를 통해 정렬을 진행해 준다.멀티셋 ms를 초기화 하고, 0을 k개 만큼 insert해준다.n개의 회의 정보를 순회하며 lower..

[P3] 백준 수열과 쿼리 20 C++ 트라이

리뷰 https://www.acmicpc.net/problem/16903트라이를 활용한 XOR문제  전역 변수MB : 비트의 상한값을 저장할 상수 변수Trie : 트라이 관련 구조체, 두 비트를 나타낼 child배열과 현재 노드의 개수 cnt를 정의한다. Trie의 생성자는 child와 cnt배열을 0으로 초기화 해준다. 소멸자는 자식 노드 포인터를 모두 delete해준다. 함수1. insertvoid insert(Trie* root, const string& str) 트라이에 비트 값을 추가할 함수매개 변수로 트라이의 루트 노드와 32개 비트 정보를 문자열로 입력 받는다.root부터 타고 내려가면서 bit정보를 저장해주고, 각 참조한 노드마다 cnt를 증가시켜 준다.만약 타고 내려가던 중 child가 ..

[G4] 백준 29811번 지각하기 싫어 C++ 멀티셋

리뷰 https://www.acmicpc.net/problem/29811인구 수가 중복이 되는지 여부를 알 수 없어 멀티셋을 사용하여 풀이하였다.  전역 변수MAX : 배열 크기의 최대값을 저장할 상수 변수n : 애지문에서 대운동장까지의 경로 수를 저장할 변수m : 대운동장에서 ITBT관까지의 경로 수를 저장할 변수k : 쿼리의 개수를 저장할 변수N : 애지문에서 대운동장까지의 경로의 인구를 저장할 배열M : 대운동장에서 ITBT관까지의 경로의 인구를 저장할 배열NV : 애지문에서 대운동장까지의 경로의 인구와 인덱스를 오름차순으로 정렬할 멀티셋MV : 대운동장에서 ITBT관까지의 경로의 인구와 인덱스를 오름차순으로 정렬할 멀티셋 함수없음  문제풀이n, m값을 입력 받는다.1 ~ n까지의 인구수를 N배열에..

[G2] 백준 1445번 일요일 아침의 데이트 C++ 다익스트라

리뷰 https://www.acmicpc.net/problem/1445문제는.. 어렵진 않은데 자잘한 실수라던가 지문을 제대로 읽지 않아 발생할 문제가 많다.  전역 변수n, m : 맵의 세로/가로 길이를 저장할 변수sx, sy, ex, ey : 시작 및 도착 위치의 좌표를 저장할 변수dx, dy : 4방향 탐색을 위한 방향 배열Pos : 좌표 정보 x, y, 쓰레기를 밟은 횟수 g, 쓰레기 근처를 지나간 횟수 ng를 정의할 구조체, 기본적으로 g를 기준으로 오름차순 정렬하고, g가 동일한 경우엔 ng를 기준으로 오름차순 정렬한다. 함수1. dijkstrapair dijkstra() 다익스트라를 통해 출발지에서 목적지까지 쓰레기를 밟거나 근처를 지나는 최소를 구하는 함수Pos 타입의 우선순위 큐 pq를 ..

[G4] 백준 24955번 숫자 이어 붙이기 C++ 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/24955문자열을 통해 숫자를 이어 붙이기를 구현했다.  전역 변수MOD : 모듈러 연산을 위한 상수 변수N : 배열의 최대 크기를 정의할 상수 변수n : 집의 개수를 저장할 변수q : 쿼리의 개수를 저장할 변수nodes : 대문에 쓰여있는 수를 저장할 배열v : 방문 여부를 체크하기 위한 배열edges : 인접 리스트를 저장하기 위한 벡터 배열P : 현재 노드 node와 이어 붙인 수 cv를 정의할 구조체 함수1. bfsstring bfs(int sn, int en) 너비 우선 탐색을 통해 시작 지점부터 목표 지점까지 방문하며 이어 붙인 수를 구하기 위한 함수매개 변수로 시작 지점의 번호 sn, 도착 지점의 번호 en을 전달 받는다.P타입의..

[G4] 백준 12886번 돌 그룹 C++ 너비 우선 탐색

리뷰 https://www.acmicpc.net/problem/12886문제를 잘못 읽어 접근이 이상했는데 돌의 개수를 두개만 비교해도 된다는 접근을 하게 되었다.  전역 변수a, b, c : 세개의 돌의 크기를 저장할 변수total : 세 돌의 크기의 합을 저장할 변수v : 방문 정보를 체크하기 위한 변수S : 두 돌의 크기를 정의할 구조체 함수1. bfsbool bfs() 너비 우선 탐색을 통해 세 돌의 크기가 같아질 수 있는지 체크하기 위한 함수S타입의 큐 q를 초기화 하고, 세 돌 중 아무 돌이나 두개를 묶어 push해준다.두 돌의 현재 크기를 기준으로 v배열에 방문 처리를 진행해 준다.q가 빌 때 까지 while 루프를 순회하고, 매 루프마다 요소를 한개씩 꺼내어 준다.두 돌을 각각 변수 a, ..

728x90