본문 바로가기

코딩테스트 연습/programmers

(34)
[Programmers] 프로그래머스 추석 트래픽 https://programmers.co.kr/learn/courses/30/lessons/17676
[Programmers]프로그래머스 카카오프렌즈 컬러링북(c++) https://programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 코딩테스트 연습 > 2017 카카오코드 예선 > 카카오프렌즈 컬러링북 1. DFS로 상,하,좌,우 중 같은 숫자가 있다면 area의 key값에 해당하는 area[cnt]영역을 +1 해준다 2. 방문한 곳은 isVisited = true로 설정해줘서, 재방문하지 않게 한다. 3. 해당 cnt의 DFS가 한번 끝날때마다 max_size_of_one_area의 최댓값을 ..
[Programmers] 프로그래머스 > 메뉴 리뉴얼(c++) https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 코딩테스트 연습 > 2021 KAKAO BLIND RECRUITMENT > 메뉴 리뉴얼 식빵맘님의 블로그를 참고해서 조합에 대한 공부 후, 문제 풀이에 적용했다. (링크는 아래쪽에) 1. orders의 문자들을 각각 알파벳 오름차순으로 정렬 2. Combination(조합)을 이용해서 course의 수에 해당하는 문자를 menu(=unordered_map)에 추가..
[Programmers] 프로그래머스 오픈채팅방(c++) https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 코딩테스트 연습 > 2019 KAKAO BLIND RECRUITMENT > 오픈채팅방 이중 for문과 벡터를 이용해서 풀었더니 실패했다. (메모리 초과, signal: segmentation fault ) 키 값에 의존하여 닉네임 값을 변경하면 되니까 , 정렬이 필요없는 unordered_map을 사용했다. 그런데 아래처럼 string.push_back(chat..
[Programmers] 이분탐색 > 입국심사(c++) https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 이분탐색의 기준을 "시간"으로 설정했다. start의 초깃값은 심사관을 기다리지않고 한번에 통과 했을때의 시간이고, end의 초깃값은 가장 늦은 심사관을 모두 통과했을때의 시간이다. 1. mid는 start와 end의 평균값으로 설정 2. 현재 mid시간에서 통과할 수 있는 인원의 수를 person변수에 누적 3. 인원 수가 통과할 수 있는 인원수(=person)..
[Programmers]그래프 > 순위(c++) https://programmers.co.kr/learn/courses/30/lessons/49191# 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm) 을 응용해서 풀었다. 1. floyd의 초깃값을 모두 -1로 초기화 2. result[i][0]는 이긴 선수, result[i][1]는 패배한 선수 이므로 floyd에서 가로를 기준으로, 자신이 이겼는지 졌는지를 나타낸다. 예시의 results[0][0] = 4, results[0][1] = 3 에서 4가 3을 이겼으므로 floyd[results[i][0]][results[i][1]] =1, flo..
[Programmers]그래프 > 가장 먼 노드(c++) https://programmers.co.kr/learn/courses/30/lessons/49189# 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr BFS로, 모든 노드를 방문 했을 때 남아있는 q의 사이즈를 출력했다. 1. edge의 값들을 graph안에 연결된 노드들을 추가함 2. 1부터 시작하므로, 맨처음엔 q에 1을 push 3. 현재 q의 사이즈만큼 pop을 해주면서 q의 top (현재 1)과 연결되어있는 노드 graph[top]안의 원소들을 모두 push 4. 추가한 원소들은 모두 방문 표시(isVisited[top][i]=true) 5. 3~4번을 isVisite..
[Programmers]탐욕법 > 단속카메라 https://programmers.co.kr/learn/courses/30/lessons/42884# 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr #include #include #include using namespace std; bool comp(vector a, vector b){ return a[0] < b[0]; } int solution(vector routes) { int answer = 1; sort(routes.begin(), routes.end(), comp); int start = routes[0][0]; int end = routes[0][1]; for(int i=1;i routes[i..