알고리즘 공부/C++ 460

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

[G4] 백준 31792한빛미디어 (Hard) C++ 트리 셋, 이분 탐색

리뷰 https://www.acmicpc.net/problem/31792트리 맵과 lower_bound를 활용한 문제  전역 변수q : 쿼리의 개수를 저장할 변수dic : 책의 가격을 저장할 트리 셋cnt : 가격별 책의 개수를 저장할 배열 함수없음  문제풀이q값을 입력 받고, q번의 while 루프를 수행 하고 매 루프마다 변수 op에 값을 입력 받아준다.op가 3이 아닌 경우 책의 가격을 변수 price에 입력 받아 저장해 준다.op가 1인 경우 dic에 price가 존재한다면 cnt의 price를 1만큼 증가시켜 준다.dic에 price가 존재하지 않으면 dic에 price를 insert해주고, cnt의 price를 1만큼 증가시켜 준다.op가 2인 경우 dic에 price가 존재한다면 cnt의 p..

[G5] 백준 1374번 강의실 C++ 그리디 알고리즘, 정렬, 우선순위 큐

리뷰 https://www.acmicpc.net/problem/1374간단한 정렬 + 우선순위 큐 문제  전역 변수n : 강의의 개수를 저장할 변수ans : 정답을 저장할 변수T : 강의의 시작 시간 st와 종료 시간 et를 정의할 구조체, et를 기준으로 오름차순 정렬한다.lst : 강의 정보를 저장할 T타입 배열pq : 강의 정보를 저장할 T타입 우선순위 큐 함수1. cmpbool cmp(const T& left, const T& right) 정렬 시 사용하기 위한 커스텀 비교 함수매개 변수로 T타입 변수 2개를 각각 left, right로 전달 받는다.right의 st가 left의 st보다 크다면 true를 리턴하여 두 요소의 순서를 바꾸어 준다. 문제풀이n값을 입력 받고, n개의 요소를 입력 받아..

728x90