SWEA 40

SWEA 7465번 창용 마을 무리의 개수 C++ 유니온 파인드 Union-Find

리뷰  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 전형적인 유니온 파인드 문제, 기본적인 코드만 구현하면 해결할 수 있는 문제이다. 문제 풀이테스트 케이스 마다 init 함수를 실행하여 ans를 0으로, 1 ~ n의 노드를 자기 자신을 value로 갖도록 nodes배열을 초기화 한다.query함수를 통해 m개의 간선을 입력 받고 두 노드를 Union 처리를 해준다.solution 함수를 통해 1 ~ n개의 노드 각각을 Find하여 부모를 최신화 하고 자기 자신을 value로 가진 노드를 발견했을 경우 ans를 증가 시켜준다.각 테스트 케이스 마다 ans 값을 출력해 주면 된다. 참고 사항Union 처리 후 자..

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 4013번 [모의 SW 역량테스트] 특이한 자석 C++ 덱, 재귀

리뷰 SWEA를 풀면서 처음으로 만난 덱을 써서 푸는 문제 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 문제 풀이tc를 입력 받고 각 테스트 케이스를 개행한다, 이후 init, input, solution 함수를 실행하고 각 테케마다 ans를 출력해줬다.1. init()ans를 0으로 초기화 해주고 각 자석 정보를 clear를 통해 초기화 해준다.2. input()k값을 받아와 주고, 4개의 자석에 각각 N극과 S극 정보를 받아와 준다.3. solution()k번을 순회하며 회전시킬 자석과 방향정보를 입력 받고 각 자석을 돌려준다.자석을 돌리기 전에 방문배열 초기화와 회전시킬 자석의 방문처리가 필요하다.4.bt..

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가 동시에 같은 위치로 이동할 수 있다. 시뮬레이션시간에 ..

SWEA 5650번 [모의 SW 역량테스트] 핀볼 게임 구현, 시뮬레이션

리뷰2D 시뮬레이션 구현 문제, 범위를 벗어난 조건을 만났을때 잘 처리해 주어야 한다. 문제 풀이init과 input, solution 세가지 구역으로 나누어 풀었다.init 함수에서는 ans값을 0으로 초기화, 웜홀 정보를 초기화 해주었다.input에서는 n값을 받고, n * n크기의 맵을 초기화, 만약 맵에서 6이상이 수가 있다면 웜홀을 초기화 해주었다.solution 함수에서는 맵 전체에서 0인 값을 만난다면 4방향으로 simulation을 돌려주는 브루트포스 역할simulation 함수에서는 실제로 핀볼이 2D 맵에서 왔다갔다 하고 얻은 점수를 출력해 준다.핀볼이 시뮬레이션을 통해 얻은 가장 높은 값을 출력해 주면 된다. 참고 사항simulation 함수 상세 내용핀볼이 시작되는 좌표와 현재 핀볼..

SWEA 5658번 [모의 SW 역량테스트] 보물상자 비밀번호 C++ 문자열, 정렬

리뷰부분 문자열 생성과 문자열로 이루어진 16진수를 10진수로 변환하고, 정렬하는 문제 문제 풀이각 테스트 케이스마다 정수 n, k값과 문자열 s를 받아와 준다.정수형 벡터 lst를 초기화 하고, n번의 for문을 돌려준다.문자열 s의 앞 부터 n을 4로 나눈 값 만큼의 부분의 부분 문자열을 생성하고 이를 10진수로 변환해 준다.만약 lst 내에 해당 숫자가 없을 경우 lst에 추가해준다.그리고 제일 앞쪽의 문자를 뒤쪽으로 옮긴 뒤 탐색을 계속 진행해 준다.for문이 종료되었을 경우 lst를 내림차순으로 정렬해 주고 k - 1 번째 인덱스의 수를 출력해 주면 된다. 참고 사항stoi(temp, nullptr, 16);문자열을 16진수로 인식하고 10진수로 변환하는 함수 정답 코드#include#inclu..

728x90