일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 부스트코스
- 월간 코드 챌린지
- DP
- 2020 KAKAO BLIND
- Level 3
- 코드 리뷰
- Gold 4
- 코드리뷰
- SWEA
- 시뮬레이션
- pass
- 구현
- DFS
- 삼성 SW 역량 테스트
- Web
- Level 4
- level 1
- 스택/큐
- Gold 5
- 백준
- 프로그래머스
- BFS
- 백트래킹
- 2019 KAKAO BLIND
- 그리디
- c++
- Level 2
- next_permutation
- 2020 카카오 인턴십
- 브루트포스
- Today
- Total
목록알고리즘 (82)
Min:D's Devlog
문제 SWEA 모의 SW 역량테스트 - 2112 보호 필름 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 이 문제는 주어진 보호 필름이 성능검사에 통과하기 위해 최소 몇 번의 약품을 투입해야 하는지 찾는 문제이다. 성능 검사는 보호 필름의 모든 세로 방향에 대해서 동일한 특성의 셀들이 K개 이상 연속적으로 존재해야 통과할 수 있고, 약품 투입을 하게 되면 해당 가로 방향이 모든 같은 특성으로 바뀌게 된다. 약품을 K회 투입하면 무조건 성능검사를 통과할 수 있다. 왜냐하면 같은 특성의 약품을 연속적으로 K회 넣어주면, 무조건 모든 세로 방향에 대해 동일한 특성의 셀이 K개 이상 연속되기 때..
문제 SWEA 모의 SW 역량테스트 - 5658 보물상자 비밀번호 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 주어진 문자열을 4등분하여 만들 수 있는 모든 16진수를 10진수로 바꿔 K번째로 큰 수를 구하는 문제이다. 문자열 한 칸씩 이동시키며 가능한 문자열을 모두 찾아주어야하기 때문에 아래와 같이 코드를 작성하였다. 아래의 코드에서 M은 문자열의 총 길이를 4로 나눈 값을 의미하며, n에 M개의 문자를 넣고, 이를 DEC 함수를 이용하여 10진수의 값으로 바꿔 answer 벡터에 넣어주었다. for (int i = 0; i < M; i++) { for (int j = 0; j < 4..
문제 SWEA 모의 SW 역량테스트 - 5644 무선 충전 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 두 사람이 충전기(BC)가 설치된 지역을 돌아다니면서 얻게되는 충전량의 최댓값을 구하는 문제이다. 같은 충전기를 사용하면 충전량은 각각 반으로 나눠지기 때문에 이를 고려하여 문제를 해결해야한다. 우선, map을 3차원 벡터로 만들어서 각 BC의 충전 범위에 P(성능, 충전량)를 표시해주었다. 이 충전 범위는 이전 문제였던 홈 방범 서비스에서의 서비스 영역과 같은 모양이어서 이때 작성했던 2중 for문을 활용하였다. [SWEA][모의 SW 역량테스트][C++] 2117 홈 방범 서비스 ..
문제 SWEA 모의 SW 역량테스트 - 2117 홈 방범 서비스 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 손해를 보지 않으면서 가장 많은 집을 포함하는 방범 서비스 영역에 포함된 집의 개수를 구하는 문제이다. 이를 구하기 위해 5중 for문을 돌며 최댓값을 구해주었다. 첫 번째 for문은 서비스 영역의 크기(k)를 나타낸다. 서비스 영역이 도시를 다 덮을 수 있을 만큼의 크기까지 확인해봐야 하기 때문에, K = 1에서 K = N + 1의 크기까지 탐색해주었다. (풀이 코드에서 k = K - 1, 즉 k = 0에서 k = N까지 탐색) 두 번째와 세 번째 for문은 서비스 영역의 가운..
문제 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)도 구해주었다. ..