level 3 13

[프로그래머스] 셔틀 버스

2018 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00" programmers.co.kr 문제 확인 구현 문제입니다. 풀이 문제에서 가장 중요한 요소는 마지막 버스에 자리의 여부입니다. 마지막 버스에 자리가 남는 경우 : 마지막 버스의 도착 시간에 탑승하면 됩니다. 마지막 버스에 자리가 없는 경우 : 기다리는 사람들 중 m 번째 사람보다 1분 전에 도착하면 됩니다. timetable을 읽으면서 ..

[프로그래머스] 매칭 점수

2019 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 매칭 점수 매칭 점수 프렌즈 대학교 조교였던 제이지는 허드렛일만 시키는 네오 학과장님의 마수에서 벗어나, 카카오에 입사하게 되었다. 평소에 관심있어하던 검색에 마침 결원이 발생하여, 검색개발팀 programmers.co.kr 문제 확인 스트링 처리 문제입니다. 풀이 정규 표현식을 사용하여 푸는 것이 푸는 시간 단축에 도움이 됩니다. c++의 를 사용해 풀어봅니다. 씹어먹는 C++ - modoocode.com regex::optimize를 이용하여 성능 개선을 할 수 있습니다. 웹사이트 이름 처리 : ]*content=\"https://(\\S*)\"[^>]*/> [^>]* : 어트리뷰트 content가 나오기 이전에 '>'가 나오면 무시합..

[프로그래머스] 길 찾기 게임

2019 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 길 찾기 게임 [[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] programmers.co.kr 문제 확인 이진트리 문제입니다. 풀이 포인터를 활용하는 것보다 인덱싱을 사용하는 것이 더 빠르므로 이를 사용합니다. 가로의 값 y는 중복될 수 없으므로 이를 이용하여 삽입할 노드의 y값이 현재 노드 y값보다 작으면 왼쪽, 크면 오른쪽 자식 노드로 넘기며 선택 위치가 빈칸인 경우 해당 위치에 삽입합니다. 프리오더, 포스트 오더를 한번에 재귀를 사용하지 않고 구현하기 어려우므로 간단하게 재귀 함수를 이용해 순회합니다. 코..

[프로그래머스] 블록 이동하기

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr 문제 확인 3차원 bfs 문제입니다. 풀이 visited 배열을 visited[100][100][2], 3차원으로 둡니다. 앞 2차원은 위치이며 마지막 [2]에 해당하는 차원은 로봇이 가로, 세로 상태로 방문함을 의미합니다. 로봇의 좌표를 (ax, ay), (bx, by)로 두고 항상 a에 해당하는 좌표가 b 좌표보다 위, 왼쪽에 위치하도록 유지합니다. (a) (b) 혹은 (a) (b) 형태로 유지함으로써 로봇 이동, 회전 시 조건 검사..

[프로그래머스] 외벽 점검

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하 programmers.co.kr 문제 확인 2가지 풀이법이 있습니다. 비트로 수리한 외벽을 체크하고 완전 탐색 퍼뮤테이션을 통해 완전 탐색 풀이 1번 풀이의 경우 큐를 통해 bfs 완전 탐색을 하며 최대 15개의 점검해야 할 외벽이 있기 때문에 각 외벽을 2^i 비트로 표현합니다. 010100의 의미는 점검해야 할 외벽 6개 중에서 i : 2, 4에 해당하는 외벽을 점검 완료하였다는 의미를 가집니다. 현재 위치의 벽을 dist[i]로 설정..

[프로그래머스] 기둥과 보 설치

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 기둥과 보 설치 5 [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]] [[1,0,0],[1,1,1],[2,1,0],[2,2,1],[3,2,1],[4,2,1],[5,0,0],[5,1,0]] 5 [[0,0,0,1],[2,0,0,1],[4,0,0,1],[0,1,1,1],[1,1,1,1],[2,1,1,1],[3,1,1,1],[2,0,0,0],[1,1,1,0],[2,2,0,1]] [[ programmers.co.kr 문제 확인 단순 구현 문제입니다. 풀이 기둥, 보가 설치된 것을 확인하기 위해 ary[101][101][2] 로 선언합니다. 각 ..

[프로그래머스] 자물쇠와 열쇠

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 문제 확인 구현, 완전 탐색 문제입니다. 풀이 초기 자물쇠 lock의 홈의 개수를 저장해 둡니다. 매번 확인 시 배열을 회전하지 말고 처음에 key 배열을 회전하여 따로 저장합니다. 이를 통해 메모리 검색 시간과 회전 비용을 줄일 수 있습니다. 완전 탐색 범위는 초기 위치 (i, j) : 1 - key.size() ~ n, 배열 조건 검사 위치 (ki, kj) : 0 ~ m까지 탐색하게 됩니다. 이로 인하여 비교할 값은 lock[i + ki][j + kj]..

[프로그래머스] 광고 삽입

2021 카카오 코딩 테스트 문제입니다. 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 문제 확인 초로 환산했을 때 최대 크기가 360000이므로 배열과 prefix sum을 이용하여 풀 수 있습니다. 풀이 들어오는 string은 모두 길이가 고정이므로 간단하게 시간과 정수로 변환하는 함수를 만들어 활용합니다. log가 시작되는 지점에 +1, 끝나는 지점에 -1을 해 두고 이들을 prefix sum을 구하여 각 시간마다 시청하는 사람의 ..

[프로그래머스] 합승 택시 요금

2021 카카오 코딩 테스트 문제입니다. 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 문제 확인 그래프 탐색 응용문제입니다. 풀이 합승 후 무지, 어피치 중 한 사람이 내리는 지점을 i로 두면 총요금은 dist[i][start] ..