2020 카카오 7

[프로그래머스] 가사 검색

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 가사 검색 programmers.co.kr 문제 확인 트라이를 활용하는 문제입니다. 트라이 (컴퓨팅) 위키백과, 우리 모두의 백과사전. "A", "to", "tea", "ted", "ten", "i", "in", "inn"를 키로 둔 트라이. 이 예제에는 모든 자식 노드가 알파벳 순으로 왼쪽에서 오른쪽으로 정렬되어 있지는 않습니다. (루트 ko.wikipedia.org 풀이 트라이의 가지를 알파벳에 대하여 만듭니다. 와일드카드 문자 ? 는 조건에 따라 접두사, 접미사에서만 나오므로 역순으로 읽은 문자열에 대하여 트라이를 하나 더 생성합니다. 와일드카드 문자 특징은 길이가 1로 고정되어 있으므로 각 문자열의 길이를 map 컨테이너를..

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

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]..

[프로그래머스] 괄호 변환

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 문제 확인 문제에서 주어진 대로 구현하면 되는 문제입니다. 풀이 올바른 문자열 인지 판단하는 방법은 문자열을 검색하면서 ( : +1, ) : -1을 해 주면서 값이 항상 양수라면 올바른 문자열, 한 번이라도 음수 값이 된다면 올바르지 못한 문자열이 됩니다. 괄호 문자 (, ) 은 아스키 값으로 72, 73이며 붙어있는 수 이므로 xor 1을 통해 간단하게 서로 바꿀 수 있습니다. 코드 1 2 3 4 5 6 7..

[프로그래머스] 문자열 압축

2020 카카오 블라인드 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제 확인 스트링 처리 문제입니다. 풀이 문제 조건에 따라 경우의 수를 나눕니다. 압축한 패턴이 반복되는 횟수가 1인경우 패턴 그대로 입력합니다. 반복 횟수가 2 이상인 경우 : 길이가 1인 경우 "a2", "aa" 같으므로 length + num, 그 이상인 경우 length + num로 해결할 수 있습니다. num은 횟수를 문자열로 나타냈을때 길이이므로 log10을 취해 구할 수 있습니다. 코드 ..