구현 33

백준 17406번 배열 돌리기4 C++ 백트래킹, 구현, 시뮬레이션

리뷰 완전 탐색을 통해 배열을 돌리는 경우의 수를 모두 실행하고 최적값을 찾는 문제회전을 하는 횟수인 k의 범위가 6으로 작아서 완전 탐색을 돌려도 시간이 크게 많이 걸리지는 않았다. https://www.acmicpc.net/problem/17406 문제 풀이input 함수를 통해 n, m, k값을 입력 받고 2차 배열 정보를 받아준다.k번에 걸쳐 회전을 할 좌표를 받고, 회전할 범위를 받은 뒤 구조체 배열 pos에 전달해 준다.좌표 인덱스를 받을 빈 벡터 path를 초기화 해주고, dfs 함수의 매개변수로 0과 path를 전달해 준다.dfs 함수를 통해 k! 개의 경우의 수를 구해준다. 매번 방문 처리 후 path에 회전할 순서를 저장해 주면 된다.재귀가 k번째에 달했을때 simul 함수에 path와..

백준 17281번 ⚾ C++ 백트래킹, 구현, 시뮬레이션

리뷰 백트래킹 + 구현 + 시뮬레이션 문제, 시간 분배를 잘 해줘야 한다.https://www.acmicpc.net/problem/17281 문제 풀이이닝의 수 n값을 받아오고 2차 정수 배열 inning에 i번째 이닝에 j번 타자가 치는 정보를 받아온다.빈 벡터 temp를 초기화 하고 dfs를 통해 완전 탐색을 돌려준다.dfs의 매개변수로는 현재 타자의 수 level과 타자의 번호를 저장한 벡터 turn을 받아준다.level이 9 즉, 9명의 타자가 모두 모아졌을때가 기저조건이 되며 simul함수를 호출하고 리턴한다.level이 3 즉, 4번 타자의 정보를 받아올때는 0번 인덱스 (1번타자)를 추가해 주고 리턴한다.1 ~ 8인덱스 즉, 2 ~ 9번 타자가 level번째 타자가 되는 모든 경우를 탐색하며..

백준 17135번 캐슬 디펜스 C++ 브루트포스, DFS, BFS, 구현, 시뮬레이션

리뷰 쉽게 접근했다가 꽤나 애먹은 문제, 딱히 엣지케이스가 있는 것 같지는 않은데 써야할 알고리즘이 많고, 생각해 주어야 할 부분이 많아서 코드가 길어지기에 실수가 잘 나올 것 같다. https://www.acmicpc.net/problem/17135  문제 풀이input 함수를 통해 n, m, d 값을 받고 정답을 출력한 ans를 0으로, 이후 맵을 초기화 해 주었다.궁수 좌표 및 이동 범위 정보를 담을 구조체 Pos를 만들고 해당 벡터 col을 만들어 dfs를 실행해 주었다.dfs 함수의 매개변수로는 level과 궁수 3명의 정보를 담을 Pos 타입 벡터 col이다.궁수 세명을 담을 것인데, 중복을 허용하지 않는 순서가 있는 조합으로 궁수를 벡터 col에 담아준다.123, 124, 125 ... 35..

SWEA 4014번 [모의 SW 역량테스트] 활주로 건설 C++ 구현, 시뮬레이션

리뷰쉬운 구현, 시뮬레이션 문제였다, 접목할 알고리즘은 딱히 없는듯 문제 풀이각 테스트 케이스마다 ans를 0으로 초기화 해주고, 한변의 길이 n과 경사로의 길이 x, 2차원 맵 정보를 입력 받아준다.각 행의 0번째 열부터 n - 1번째 열까지 탐색을 돌리고, 각 열의 0번째 행부터 n - 1번째 행까지 탐색을 돌려준다.맵의 범위를 벗어날 때 까지 각 행과 열을 증가시키며 탐색을 한다.만약 현재보다 2이상 큰 땅을 만난다면 더이상 탐색할 필요가 없이 return 해주면 된다.만약 더 높은 땅을 만난 경우 현재 위치로부터 x - 1 이전의 땅에 경사로를 설치할 수 있는지 체크해 준다.설치가 가능하다면 현재 높이를 높여주고, 뒤쪽의 땅에 경사로 설치를 하고 한칸 올라왔다는 표시를 해준다.더 낮은 땅을 만난 ..

SWEA 5656번 [모의 SW 역량테스트] 벽돌 깨기 C++ DFS, BFS, 시뮬레이션, 구현

리뷰재귀의 깊이와 맵의 크기가 그리 크지 않아 완전 탐색으로 쉽게 구현이 가능할 줄 알았는데, 생각보다 신경써 주어야 할 것이 많았다... 어렵네 ㅜㅠ 통과한 코드도 시간이 아슬아슬 한 걸 보니 최적화가 더 필요해 보인다...  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 문제 풀이테스트 케이스 tc를 입력 받고 각 테케마다 for문을 돌려주어 init, input, solution 함수를 실행하고 정답 ans를 출력했다.1. init()ans값을 10억으로 초기화 해주고, 방문 배열 v를 0으로 초기화 해주었다.2.input()n, w, h값을 입력 받아주고 h * w크기의 맵에 벽돌 정보를 받아주었다.3.s..

SWEA 1949번 [모의 SW 역량테스트] 등산로 조성 C++ DFS, 완전탐색, 시뮬레이션, 구현

리뷰SWEA 문제는 대체적으로 어려운 것 같다.. 문제 풀이tc를 입력 받고 테스트 케이스 수 만큼 for문을 개행해 준다.init, input, solution 함수를 순차적으로 실행해준 후 ans에 저장된 답을 출력해 준다.1. init()cnt, ans, max_val을 0으로 초기화 해준다.2. input()n과 k값을 입력 받고 n * n 맵을 만들어 준다, 동시에 가장 높은 값을 max_val로 설정해 준다.3. solution()n * n 맵을 순회하며 가장 높은 봉우리를 찾은 경우 해당 위치를 기반으로 dfs를 시작해 준다.dfs를 시작하기 전에 cnt를 1로, 방문 배열 초기화, 현재 위치를 방문처리를 해준 상태로 시작한다.4. dfs(int x, int y, int f)매개변수로 입력받..

SWEA 2383번 [모의 SW 역량테스트] 점심 식사시간 C++ DFS, 시뮬레이션, 우선순위 큐

리뷰DFS를 통한 완전탐색과, PQ를 통한 값 비교, 시뮬레이션 까지 필요한 까다로운 문제   SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 문제 풀이각 테스트 케이스 마다 init과 input, solution으로 나누어 진행하였다.init에서는 각 테스트 케이스마다 초기값을 세팅해 준다.input에서는 맵 정보와 사람, 계단 정보를 받아와 초기화 해준다.solution에서는 DFS를 실행하고, DFS 내부적으로 재귀를 거치며 기저조건에 달성하면 시뮬레이션을 돌려준다.모든 재귀가 종료되고 나면 ans에 저장 되어 있는 값을 각 테스트 케이스마다 출력해주면 된다. 참고 사항1. init()맵 정보를 모두 0으로 ..

SWEA 2382번 [모의 SW 역량테스트] 미생물 격리 C++ 구현, 시뮬레이션

리뷰자꾸 50개의 테스트 케이스에서 43개만 맞아서 고민을 했었는데, 합쳐지는 경우가 2개의 미생물 뿐만 아닌, 3개의 미생물인 케이스가 있었다. SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 문제 풀이각 테스트 케이스에 대해서 init, input, solution 함수로 나누어 풀이를 하고 테스트 케이스에 대한 답을 도출하였다.1. init()정답을 도출할 ans 변수를 0으로 초기화 해준다, 맵을 나타낼 2차 배열 lst를 모두 0으로 초기화 해준다. 2. input()n, m, k 값을 입력 받고, 미생물에 대한 정보를 1번 인덱스 부터 k번 인덱스로 받아와 bugs 배열에 저장해 준다.또한 맵의 받아온 ..

SWEA 5644번 [모의 SW 역량테스트] 무선 충전 C++ 구현, 시뮬레이션

리뷰2D 시뮬레이션을 통해 사용자의 이동에 따른 충전량의 최대 합계를 구하는 문제  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com BC위치(x, y)와 충전 범위 c, 성능 p로 이루어진 구조체로 정의해 준다.BC의 충전 범위는 겹치는 경우가 있고, 겹쳐지지 않는 경우가 있다.BC의 개수는 1 ~ 8개 존재할 수 있으며, 같은 위치에 2개 이상의 BC가 설치된 경우는 없다.사용자사용자는 총 2명이고, 사용자 A는 0, 0 좌표 사용자 B는 9, 9좌표에서 시작한다. 맵은 10 * 10 고정총 이동 시간 m은 20이상 100 이하의 정수이다, 사용자 A와 B가 동시에 같은 위치로 이동할 수 있다. 시뮬레이션시간에 ..

백준 17472번 다리 만들기 2 C++ 구현, BFS, MST, 브루트포스 알고리즘

리뷰모든 노드를 연결하는 최소비용을 구하는 문제, 노드가 섬이라는 점에서 2차원 시뮬레이션 구현 문제이다.https://www.acmicpc.net/problem/17472 문제 풀이n과 m값을 입력 받고 2차원 맵을 입력 받는다.각각의 섬을 노드화 시켜준다. n * m맵을 순회하며 1을 만날 경우 바다가 아닌 지형은 모두 index로 맞추어 준다, 나는 2부터 index를 매겨줬고, 이때 노드의 개수 또한 세어주고, 해당 노드의 시작 좌표를 구조체 형태로 큐에 추가해 준다.큐에 추가된 노드를 기준으로 bfs를 실행해 각 섬까지의 모든 간선을 구해 edges 벡터에 추가해 준다.edges 벡터를 간선 기준으로 정렬 해주고, 유니온 파인드를 통해 최소 간선 비용을 구해준다.만약 모든 노드가 연결되지 못한다..

728x90