일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SWEA
- 삼성 SW 역량 테스트
- pass
- 스택/큐
- 백트래킹
- 부스트코스
- 2020 카카오 인턴십
- 브루트포스
- Level 2
- 코드 리뷰
- Gold 5
- Level 3
- level 1
- 구현
- next_permutation
- Level 4
- DFS
- c++
- 시뮬레이션
- 그리디
- Web
- 2019 KAKAO BLIND
- 코드리뷰
- 백준
- BFS
- Gold 4
- 월간 코드 챌린지
- 2020 KAKAO BLIND
- 프로그래머스
- DP
- Today
- Total
목록c++ (78)
Min:D's Devlog

문제 프로그래머스 2020 카카오 인턴십 - 보석 쇼핑 (Level 3) 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 문제 풀이 접근 방식 모든 보석을 하나 이상 포함하는 가장 짧은 구간을 구하는 문제이다. 문제를 해결하기 위해 우선, unordered_set을 이용하여 보석 종류의 개수를 구하였다. 그 후, for을 수행하며 unordered_map에 각 보석의 인덱스를 저장해주었다. 처음으로 모든 종류의 보석을 발견했을 때, map에 저장되어 있는 인덱스의 최솟값을 answer의 시작 구간, 현재 인덱스(i + 1)를 끝 구간으로 저장해주었다. 또한,..

문제 프로그래머스 2017 카카오코드 예선 - 보행자 천국 (Level 3) 코딩테스트 연습 - 리틀 프렌즈 사천성 리틀 프렌즈 사천성 언제나 맛있는 음식들이 가득한 평화로운 푸드 타운. 푸드 타운에서 행복하게 사는 리틀 프렌즈들은 마을에 있는 매직 스푼을 보물처럼 보관하고 있다. 매직 스푼은 재료만 programmers.co.kr 문제 풀이 접근 방식 출발점에서 도착점까지 이동 가능한 전체 경로의 수를 구하는 문제이다. 이 문제는 단순한 맵이 아닌 조건이 있는 맵이기 때문에 이를 고려하여 DP 방식으로 문제를 해결해주었다. 우선, map의 값이 0인 경우에는 모든 방향으로 움직일 수 있고, 1인 경우에는 갈 수 없으며, 2인 경우에는 직진만 가능하다. 2인 경우에 직진만 가능하기 때문에 수직 방향(↓)..

문제 프로그래머스 DP - 도둑질 (Level 4) 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 �� programmers.co.kr 문제 풀이 접근 방식 도둑이 훔칠 수 있는 돈의 최댓값을 구하는 문제이다. 주어진 집들은 원형으로 배치되어 있고, 인접한 집을 털 수 없다는 점을 고려하여 문제를 해결하였다. 우선, 집이 3개만 있을 때에는 한 집만 선택 가능하기 때문에, 3군데 중 최댓값을 리턴해주었다. 그 이상인 경우에는 DP 방법으로 문제를 해결하였다. 즉, 첫 번째 집을 반드시 포함하는 경우의 최댓값을 DP1, 두 번째 집을 포함하는..

문제 프로그래머스 그리디 - 단속카메라 (Level 3) 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 문제 풀이 접근 방식 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 구하는 문제이다. 어느 위치에 카메라를 설치하는 것이 좋은지 판단하기 위해 다음과 같이 구현하였다. 우선, 차량의 이동 경로를 오름차순으로 정렬하였다. 그 후, 처음 차량의 이동 구간의 시작과 끝을 start와 end로 지정하고, 다음 차량의 이동 구간이 start와 end 사이인지를 확인하였다. 구간 내에 있는 경우에는 end를 해당 구간의 끝 지점으로 바꿔주고, 이 과정을 반복하여 한 대의 카..

문제 프로그래머스 그리디 - 구명보트 (Level 2) 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 문제 풀이 접근 방식 무게 제한이 있는 구명 보트에 최대 2명씩 태워서 구출할 때, 필요한 구명 보트 개수의 최솟값을 구하는 문제이다. 이 문제를 해결하기 위해 우선, 사람들의 무게를 오름차순으로 정렬하였다. 그 후, 가장 가벼운 사람과 가장 무거운 사람이 함께 탈 수 있는지를 확인하는 방식으로 문제를 해결하였다. 함께 탈 수 있다면 start 인덱스와 end 인덱스를 함께 움직여..

문제 SWEA 모의 SW 역량테스트 - 5648 원자 소멸 시뮬레이션 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 원자들이 소멸되면서 방출하는 에너지의 총합을 구하는 문제이다. 이 문제는 공개된 테스트 케이스가 2개밖에 없어서 정답률이 17.72% 밖에 안 되는 문제였다. 그래서 문제를 풀 때 예외를 찾기가 어려워 난항을 겪었던 문제였다. 그래도 댓글에 테스트 케이스를 제공해주신 분들이 있어서 많은 도움이 되었다. 이 문제는 크게 3가지 방법으로 문제를 풀어보고자 노력하였다. 첫 번째로 시도한 방법은 원자가 충돌하는 경우를 구해서 그때의 에너지들을 모두 더하는 방식으로 구현하였다. 원자..

문제 SWEA 모의 SW 역량테스트 - 2477 차량 정비소 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 주어진 접수 창구 번호와 정비 창구 번호를 이용한 고객들의 고객 번호의 합을 구하는 문제이다. 이 문제는 주어진 조건들을 고려하여 그대로 구현하는 시뮬레이션 문제였다. 그래서 4가지 과정을 통해 문제를 해결하였다. 1. 접수 대기열 추가 현재 시간에 온 고객들을 접수 대기열에 넣어주었다. 접수 대기열을 큐로 구현하여 방문한 순서대로 사용할 수 있도록 해주었다. 2. 접수 & 수리 대기열 추가 접수 대기열에 고객이 있고, 접수 창구가 빈 창구일 경우에 대기열에 있는 고객을 접수 창구로..

문제 프로그래머스 이분탐색 - 징검다리 (Level 4) 코딩테스트 연습 - 징검다리 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가 programmers.co.kr 문제 설명 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가 [2, 14, 11, 21, 17] 지점에 놓여있을 때 바위 2개를 제거하면 출발지점, 도착지점, 바위 간의 거리가 아래와 같습니다. 제거한 바위의 위치 각 바위 사이의 거리 거리의 최솟..

문제 SWEA 모의 SW 역량테스트 - 5653 줄기세포배양 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 K시간 후 살아있는 줄기 세포의 총개수를 구하는 문제이다. 이를 구하기 위해 우선 cell이라는 구조체를 만들어서 위치(x, y)와 생명력 수치(X), 현재 남은 생명력 수치(t)를 저장해주었다. struct cell { int x; int y; int X; int t; }; 그리고 배양 시간의 최댓값은 300 시간이고, 배양 용기의 초기 크기는 최대 50 × 50이다. 즉, 생명력 수치가 1인 세포가 번식하는 데 걸리는 시간은 총 2시간으로, 300시간 동안에는 상하좌우로 150만..

문제 SWEA 모의 SW 역량테스트 - 5656 벽돌 깨기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 접근 방식 구슬로 벽돌을 깨서 남은 벽돌의 개수가 최솟값이 되는 경우를 구하는 문제이다. 우선, 구슬을 놓을 위치를 정하기 위해 DFS 함수를 만들어주었다. DFS 함수는 위치를 정해 shoot 함수를 시행하였고, 모든 구슬을 쏘았을 때, 남은 벽돌의 개수를 구하는 방식으로 구현하였다. shoot 함수는 큐를 활용하여 터져야 하는 블록들을 저장하고, 큐 내에 존재하는 블록들을 모두 터뜨린 후, 블록들 간의 빈 공간을 제거해주는 과정을 수행하도록 구현하였다. 빈 공간은 아래에서부터 0의 위치를 세..