반응형

백트래킹 33

[L3] 프로그래머스 단어 변환 C++ 백트래킹, 완전 탐색

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 시작 단어에서 한 번에 한 개의 알파벳만 바꿔 words에 있는 단어와 교체하여 목표 단어로 변경하는 문제백트래킹을 통한 완전 탐색으로 적절한 가지치기를 해가며 재귀를 실행하면 된다.  전역 변수n, len, ans : 입력되는 문자의 길이 n, words벡터의 길이 len, 정답을 저장할 변수 ansv : 이미 변경한 단어에 방문 처리를 하기 위한 정수형 변수, 벡터의 최대 길이 50으로 크기를 초기화한다. 함수1. btvoid bt(int level, string begin, const string& target, const vector words..

[L2] 프로그래머스 모음사전 C++ 해시맵, 백트래킹

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 백트래킹을 통해 각 모음 조합이 몇번째 단어인지 구해 해시맵에 기록해 놓고 입력받은 문자열을 key로 하는 해시맵의 value를 리턴하는 문제  전역 변수dic : 모음 조합으로 만든 단어를 key로 하고, 해당 단어가 몇번째 단어인지를 value로 받는 해시맵s : 백트래킹에서 모음의 종류 AEIOU를 순회하기 위한 문자열idx : n번째를 기록하기 위한 변수, 초깃값은 0이다. 함수1. btvoid bt(int level, string str) 각 재귀 단계마다 현재 문자열을 해시맵에 n번째임을 기록하기 위한 함수매개변수로 현재 재귀 단계 leve..

[S1] 백준 14889번 스타트와 링크 C++ 백트래킹, 완전 탐색

리뷰 https://www.acmicpc.net/problem/14889백트래킹 문제이나 한번 더 생각이 필요한 문제 ㅠ 전역 변수n, ans : 주어지는 팀의 개수를 저장할 변수 n, 정답을 저장할 변수 anslst : 맵 정보를 입력 받을 정수형 배열, 1-based-index이므로 21 * 21로 세팅한다.v : 방문 처리용 배열, 크기는 20으로 초기화(?) 21로 해야하는거 같은데 20으로 했는데도 맞았다. 함수1. btvoid bt(int level, vector& start) 재귀를 통해 스타트 팀과 링크 팀의 선수 정보의 차를 구하는 함수매개변수로 재귀 단계인 level과 스타트 팀의 정보 start를 받아준다.기저조건은 총 두가지가 있다, 첫번째로 ans가 0일때는 더 이상 탐색할 필요가..

[G4] 백준 1062번 가르침 C++ 백트래킹

리뷰 에잉.. 코드 한줄 차이로 너무 헤맨 문제였다.https://www.acmicpc.net/problem/1062 전역 변수n, k, ans : 단어의 개수 n, 배울 수 있는 글자의 수 k, 정답을 저장할 변수 ansv : 방문 처리용 배열path : 중복 제거용 벡터lst : 입력된 단어를 저장할 문자열 배열, 입력 문자의 최대 크기인 50으로 초기화 한다. 함수1. btvoid bt(int level) 백트래킹을 통해 배울 수 있는 단어 개수의 최대값을 구하는 함수매개변수로 level을 받아 각 재귀 단계 즉 배운 글자의 개수를 명시해 준다.기저조건은 level이 k - 5가 되었을때이다. cnt를 0으로 초기화 하고 n개의 문자열을 순회한다.flag를 1로 설정하고 각 문자열이 방문처리 되어있..

[S2] 백준 2961번 도영이가 만든 맛있는 음식 C++ 백트래킹

리뷰 조합할 수 있는 모든 음식의 조합을 탐색하여 신맛과 쓴맛의 차를 구하는 문제처음엔 모든 재료의 입력값이 10억 미만으로 봐서 어떻게 풀어야할지 정말 막막했다.모든 재료를 사용해서 요리를 만들었을 때 10억 미만인 점을 꼭 읽길 바란다 ㅠㅠhttps://www.acmicpc.net/problem/2961 전역 변수n, ans : 재료의 개수를 저장할 변수n, 정답을 저장할 변수 ans 10억 이상으로 초깃값을 세팅해 준다.v, ing1, ing2 : 방문 배열v, 신맛과 쓴맛 재료를 저장할 배열 ing1, ing2 모두 재료의 최대크기 10으로 크기를 세팅한다. 함수1. btvoid bt(int level, int val1, int val2) 백트래킹을 통해 완성된 음식의 쓴맛과 신맛의 차를 구하는 ..

[G5] 백준 15686번 치킨 배달 C++ 백트래킹, 브루트포스 알고리즘, 구현, 플러드필

리뷰 DFS + 플러드필을 조합하여 AC를 받았다, 조합 관련 가지치기가 필요한 문제 안하면 시간 초과 난다 ㅠhttps://www.acmicpc.net/problem/15686 전역 변수n, m, ans : 맵의 한 변의 길이를 저장할 변수 n, 치킨 집의 최대를 저장할 변수 m, 정답을 저장할 변수 ansdx, dy : 4방향 탐색을 위한 방향 배열lst : 맵 정보를 입력 받을 2차원 정수형 벡터BBQ : 치킨 집 정보를 저장할 구조체, 치킨집의 x, y좌표와 현재 이동한 거리를 d에 저장한다.bbqs : 치킨 집의 모든 정보를 저장할 벡터choose : 현재 선택한 치킨집의 인덱스를 저장할 정수형 벡터cnt : bbqs의 길이를 저장할 정수형 변수chic : 치킨 집의 중복을 방지하기 위해 사용할..

[G2] 19236번 청소년 상어 C++ 백트래킹, 시뮬레이션, 구현, 재귀

리뷰 문제 이해에도 시간이 많이 걸리고 구현과 시뮬레이션 디버깅에도 다소 시간이 걸렸으나 한번에 풀긴 했다.https://www.acmicpc.net/problem/19236 전역 변수dx, dy : 8방향 탐색을 위한 방향 배열v : 이미 잡아먹힌 물고기를 방문처리 하기 위한 배열max_val : 잡아먹은 물고기의 번호 최대값을 저장하기 위한 변수sdir : 최초에 잡아먹은 물고기가 갖고 있던 방향 정보를 저장하기 위한 변수Fish : 물고기의 위치와 진행 방향을 저장하기 위한 구조체fishes : 초기 물고기들의 위치와 방향 정보를 저장할 Fish타입 벡터lst : 초기 맵에 존재하는 물고기 번호를 저장하기 위한 4 * 4크기의 정수형 벡터 함수1. inputvoid input() 4 * 4사이즈의 ..

[G5] 백준 1759번 암호 만들기 C++ 백트래킹

리뷰 최소 한 개의 모음과 최소 두 개의 자음으로 구성된 정렬된 문자열의 암호를 찾는 문제https://www.acmicpc.net/problem/1759 전역 변수l, c : 암호의 길이 l, 암호로 사용했을 법한 문자의 종류 clst : 암호로 사용했을 법한 문자를 저장할 문자 배열, 크기는 16으로 초기화 한다.v : 방문 처리를 체크할 용도의 정수형 배열, 크기는 16으로 초기화 한다. 함수1. btvoid bt(int level, string cur, int ja, int mo) 백트래킹을 통해 암호가 될 수 있는 문자열의 조합을 찾아내는 함수매개변수로 재귀 단계 level, 현재의 문자열 cur, 자음의 개수 ja, 모음의 개수 mo를 전달받는다.c개의 문자열을 탐색해 준다, 만약 방문 처리가..

[G3] 백준 16954번 움직이는 미로 탈출 C++ 백트래킹

리뷰 각 단계별 맵과 현재 위치를 고려하여 목표 위치까지 이동할 수 있는지를 구하는 문제https://www.acmicpc.net/problem/16954 전역 변수lst : 초기 맵 정보를 저장할 문자열 벡터, 크기는 8로 설정한다.ans : 정답 정보를 저장할 정수형 변수v : 각 단계별 현재 위치에 대한 방문 정보를 저장할 3차원 정수형 배열, 8 * 8 * 8크기로 설정한다.dx, dy : 상하좌우, 대각선, 제자리를 고려한 방향배열Pos : 현재 위치를 나타낼 구조체 함수1. movingvoid moving(vector& map) 현재 맵에 존재하는 벽들을 모두 한칸씩 내려주는 시뮬레이션을 진행한다.맵의 아래서 부터 swap을 통해 각 행을 변경해 주고, 마지막에 0번행을 빈 칸으로 세팅해 준다..

[G5] 백준 3980번 선발 명단 C++ 백트래킹, 브루트포스 알고리즘

리뷰 11명의 선수가 각 포지션의 최대 기량을 가질 수 있게 완전 탐색을 하는 문제https://www.acmicpc.net/problem/3980 전역 변수lst : 각 선수의 포지션별 기량 정보를 저장할 정수형 2차원 배열v : 방문 처리를 위한 정수형 배열tc, ans : 테스트케이스 수를 저장할 tc, 각 테스트 케이스마다 정답을 저장하고 출력할 ans 함수1. btvoid bt(int level, int sum) 완전 탐색에 사용할 함수 매개변수 level = 재귀 단계, sum = 현재 단계까지의 기량의 합이다.level은 재귀 단계이기도 하면서 현재 선수를 의미하기도 한다.따라서 level이 0일 경우엔 첫번째 선수의 11개 포지션에 대한 기량을 탐색한다.만약 0보다 클 경우 해당 선수를 해..

728x90
반응형