일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Level 2
- 2019 KAKAO BLIND
- Level 4
- 백트래킹
- 구현
- 2020 KAKAO BLIND
- DP
- Level 3
- c++
- 월간 코드 챌린지
- next_permutation
- 코드 리뷰
- 코드리뷰
- level 1
- BFS
- 브루트포스
- Gold 5
- SWEA
- 부스트코스
- 백준
- 프로그래머스
- 그리디
- Gold 4
- 2020 카카오 인턴십
- pass
- DFS
- 삼성 SW 역량 테스트
- Web
- 스택/큐
- 시뮬레이션
- Today
- Total
목록SWEA (20)
Min:D's Devlog
문제 SWEA 모의 SW 역량테스트 - 1949 등산로 조성 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 가장 높은 봉우리에서 시작하여 가장 긴 등산로를 조성하는 문제이다. 등산로를 조성하기 위해서는 상하좌우 네 방향을 탐색하여 이전의 높이보다 낮은 곳으로만 연결해야하고, 딱 한번 산의 높이를 깎는 공사를 할 수 있다. 우선, 입력을 받으며 가장 높은 봉우리의 위치를 찾아 highest에 넣어주었다. 그 다음, 그 위치들에서부터 DFS 탐색을 시작하여 가장 긴 등산로를 찾아주었다. DFS 탐색을 위해 DFS 함수를 만들어주었고, visit 벡터를 활용하여 모든 경우를 탐색해주었다. DF..
문제 SWEA 모의 SW 역량테스트 - 2383 점심 식사시간 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 다음 세가지 단계를 통해 문제를 해결하였다. 1. 거리 구하기 map을 입력 받을 때 1을 입력 받으면 사람이므로 그 위치를 people에 넣어주었고, 1과 0이 아닌 수는 계단을 의미하므로 그때의 위치와 값을 2×3 사이즈인 stair에 넣어주었다. 그 후, 모든 사람들과 2개의 계단들 간의 거리를 구해 distances에 넣어주었다. 2. 각 사람마다 계단 선택하기 (DFS) 사람들은 계단 1 또는 계단2를 선택할 수 있다. 그래서 DFS 방식으로 모든 경우를 탐색하여 각 경우..
문제 SWEA 모의 SW 역량테스트 - 2382 미생물 격리 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 매 시간마다 미생물 군집을 이동시켜야 하는 문제이므로, BFS 방식으로 문제를 해결하였다. cluster 구조체를 만들어서 이동할 군집들의 위치(x, y)와 현재 시간(m)을 저장하여 큐에 넣어주었고, map은 3차원 배열로 만들어서 map[x][y][0]에는 미생물의 수, map[x][y][1]에는 방향, map[x][y][2]에는 겹치는 경우에 미생물 수가 가장 많은 군집의 미생물 수를 저장하였다. 미생물 군집의 정보를 입력 받을 때, 그 군집의 미생물 수와 방향은 map에 저장..
문제 SWEA 모의 SW 역량테스트 - 1953 탈주범 검거 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 파이프 모양을 고려하여 BFS로 문제를 해결하였다. 우선, location 구조체를 만들어 위치(r, c)와 남은 시간(l)을 저장해주었고, 이를 큐에 넣어 BFS를 시행하였다. BFS 내에서는 switch문을 사용하여 파이프의 모양에 따라 이동할 수 있는 방향을 각각 넣어주었다. (0 : 상, 1 : 우, 2 : 하, 3 : 좌) switch (map[now.r][now.c]) { case 1: go_dirs = {0, 1, 2, 3}; break; case 2: go_dirs =..
문제 SWEA 모의 SW 역량테스트 - 2115 벌꿀채취 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 각 칸에서부터 가로로 M개의 칸의 벌통들을 선택하였을 때, 그 칸들에서 나올 수 있는 모든 조합을 확인하여 최댓값을 구하였고, 각 줄마다 그 결괏값들의 최댓값을 구해서 가장 큰 값 2개를 더하여 최대 수익을 구하였다. (예제의 설명과 달리, 각 줄에서 최대 1개만 선택해야 모든 테스트 케이스를 통과할 수 있음) hive 벡터에는 주어진 벌통들의 값을 저장하였고, 제곱값이 문제를 풀 때 계속 필요해서 square 벡터에 hive의 제곱값을 저장하였다. result 벡터에는 해당 칸에서부터..
문제 SWEA 모의 SW 역량테스트 - 1952 수영장 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 1일권 / 1달권 / 3달권/ 1년권의 조합으로 가능한 최소 비용을 구하는 문제이다. 우선, 1일권과 1달권을 먼저 비교해주었고, 그 값과 3달권을 비교하여 더 나은 선택을 찾아주었다. 마지막으로 그 결과와 1년권의 가격을 비교하여 최종적인 최소 비용을 구하였다. 1) 1일권과 1달권 각 달의 이용 계획 일수를 days 벡터에 입력받고, (계획 일수) × (1일권의 가격)과 1달권의 가격 중 더 낮은 가격을 선택하여 저장해주었다. 그리고 모든 달의 비용의 총합(total)도 구해주었다. ..
문제 SWEA 모의 SW 역량테스트 - 4008 숫자 만들기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 연산자의 순서를 조합하여 연산의 최댓값과 최소값을 구하고, 그 값들의 차를 구하는 문제이다. 조합을 만들기 위해 next_permutation을 사용해 주었다. 그리고 연산자를 입력 받을 때 +는 0, -는 1, ×는 2, ÷는 3으로 저장하고, switch문을 사용하여 연산을 해주었다. 풀이 코드 - C++ #include #include #include using namespace std; int main(int argc, char** argv) { int test_case; i..
문제 SWEA 모의 SW 역량 테스트 - 4014 활주로 건설 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 설치 가능한 경사로를 찾기 위해 가로 방향과 세로 방향으로 각각 탐색해주어야 한다. 그래서 편의를 위해 map 벡터를 2N×N 크기로 만들어서 가로 방향과 세로 방향으로 넣어주었다. 이렇게 하면 나중에 이중 for문을 두번 돌리지 않아도 된다. vector map(N * 2, vector(N)); for (int i = 0; i > map[i][j]; map[j + N][i] = map[i][j];..
문제 SWAE 모의 SW 역량테스트 - 4013 특이한 자석 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 이 문제를 풀기 위해 회전시켜야 할 자석을 찾는 find 함수와 자석을 회전시켜줄 move 함수를 만들어주었다. find 함수는 다음과 같이 재귀 함수로 구현하였다. void find(int num, int dir) { visit[num] = 1; nums.push_back(num); dirs.push_back(dir); if (num - 1 >= 0 && !visit[num - 1] && magnet[num - 1][2] != magnet[num][6]) find(num - 1, ..
문제 SWEA 모의 SW 역량테스트 - 4012 요리사 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 이 문제는 N(짝수) 개의 식재료를 반으로 나눠 두 개의 요리를 할 때, 두 요리의 총 시너지의 차가 최소가 되도록 조합하는 문제이다. 조합을 간단하게 구현하기 위해 next_permutation을 사용해주었다. next_permutation에 인자로 넣을 벡터 idx는 N개의 0으로 초기화하고, N/2개의 1을 뒤쪽부터 넣어주었다.(정렬할 필요가 없도록!) do ~ while문 내에서는 0인 경우와 1인 경우로 나눠서 인덱스를 벡터에 저장하고, 그 인덱스들의 조합을 통해 각 요리의 총 ..