브루트포스 알고리즘 24

[S1] 백준 2531번 회전 초밥 C++ 슬라이딩 윈도우, 덱

리뷰 https://www.acmicpc.net/problem/2531회전 초밥의 라인을 돌려가며 먹을 수 있는 초밥의 가짓수의 최대를 구하는 문제N * k 는 9천만이라 쉽게 AC가 날 줄 알앗는데 덱 + set만으로 구현을 하니 시간초과가 났다  전역 변수n : 주어지는 초밥의 개수d : 주어지는 초밥의 최대 가짓수k : 먹을 수 있는 초밥의 개수c : 추가로 얻을 수 있는 초밥의 정보ans : 먹을 수 있는 초밥의 최대 가짓수를 저장할 변수v : 먹은 각 초밥의 개수를 저장하기 위한 배열 함수없음  문제풀이n, d, k, c를 입력 받아주고 정수형 덱 deq를 초기화 해준다.n개의 초밥 정보를 deq에 추가해 준다.cnt를 0으로 초기화 하고, 처음 0 ~ k - 1개의 초밥을 먹은 상태로 만들어준..

[L2] 프로그래머스 전력망을 둘로 나누기 C++ BFS, 완전 탐색, 브루트포스 알고리즘

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 브루트포스 알고리즘으로 간선을 1개씩 지워가며 모든 경우의 그룹을 조회하여 그룹간 송신탑 개수의 차를 구하는 문제  전역 변수v : BFS시 방문배열로 사용하기 위한 정수형 배열 함수1. bfsint bfs(int node, const vector>& lst) 너비 우선 탐색을 통해 노드간 관계를 만들고, 각 노드에 방문 처리를 진행하는 함수매개 변수로 탐색을 시작할 노드 node와 인접 리스트 정보 lst를 입력받는다.정수형 큐 q를 초기화 하고 초깃값인 node를 push해준다.node를 방문 처리 해주고, 그룹간 송신탑의 개수 cnt 개수를 1로..

[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일때는 더 이상 탐색할 필요가..

[L2] 프로그래머스 H-index C++ 완전 탐색, 브루트포스 알고리즘, DAT

리뷰처음엔 문제 이해가 잘 되지 않았는데 벡터 내에 존재하는 수가 n개 이상인 최대값을 구하는 문제로 받아들였다.  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  전역 변수v : 나온 숫자의 합계를 저장해 둘 정수형 배열, 크기는 10001로 세팅한다. 함수없음  문제풀이매개변수로 주어진 citations 벡터에 존재하는 값들을 for문을 통해 모두 탐색한다.v배열의 1 ~ 현재수까지의 인덱스를 모두 1씩 증가시켜준다.len을 citations벡터의 길이로 초기화 해주고, h_index변수를 0으로 초기화 해준다.len크기로 while문을 개행하고 현재 v..

[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로 설정하고 각 문자열이 방문처리 되어있..

[G5] 백준 10472번 십자뒤집기 C++ 비트마스킹, BFS, 브루트포스 알고리즘

리뷰 3 * 3 도형을 반전시켜 모든 땅을 흰색으로 만드는 문제https://www.acmicpc.net/problem/10472 전역 변수tc, target : 테스트케이스의 개수tc, 각 테케마다 초기 도형의 비트 정보targetlst : 초기 맵 상태를 얻어올 문자열 배열, 3 * 3크기이므로 크기는 3이다.dx, dy : 비트 반전을 시킬 구간의 방향 배열, 상하좌우 및 제자리를 포함하여 총 5개이다.v : 비트마스킹 시 방문 여부를 저장할 배열 9개의 상태를 저장해야 하므로 2^9보다 크게 설정한다.Pos : 큐 내부에서 현재 비트정보와 변환 횟수를 저장하여 사용할 구조체 함수1. getTargetvoid getTarget() 테스트케이스에서 입력된 도형의 비트 정보를 target변수에 저장하기..

[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 : 치킨 집의 중복을 방지하기 위해 사용할..

[G3] 백준 1701번 Cubeditor C++ KMP, 문자열, 브루트포스 알고리즘

리뷰 브루트포스 알고리즘을 통해 문자열의 길이를 줄이며 각 문자열의 LPS를 구하는 문제https://www.acmicpc.net/problem/1701 전역 변수str : 탐색을 진행할 문자열 변수n, ans : 초기 문자열의 길이 n, 가장 긴 길이를 저장할 변수 ans 함수1. getLPSvoid getLPS(string str) 문자열의 LPS를 구하는 함수매개 변수는 초기 문자열에서 왼쪽의 문자열이 한개씩 날아간 문자열들이 주어진다.해당 문자열에서의 LPS를 구하고 LPS중 가장 큰 값이 ans에 저장되게 된다. 문제풀이초기 문자열 str을 입력 받고 n에 str의 길이를 저장한다.n번의 for문을 개행하고 str의 왼쪽에서부터 한글자씩 제거하며 getLPS함수의 매개변수로 전달해 준다.n번의 ..

[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개의 문자열을 탐색해 준다, 만약 방문 처리가..

728x90