전체 글 127

[백준] 19237 어른 상어

19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 문제 확인 구현 문제입니다. 풀이 주어진 조건대로 풀면 쉽게 풀 수 있는 문제입니다. 일일이 모든 냄새의 수명을 -1씩 하면 느리므로 냄새를 뿌리면 해당 냄새의 수명을 depth + k로 기록하여 depth가 이를 넘을 경우 접근할 수 있도록 합니다. 상어를 1부터 m까지 오름차순으로 이동하여 겹치는 상어는 그 순간 내보낼 수 있도록 합니다. 주의해야 할 점은 냄새와 상어의 위치를 구분지어야 같은 칸에 상어가 들어갈 수..

[프로그래머스] 무지의 먹방 라이브

2019 카카오 채용 코딩 테스드 문제입니다. 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr문제 확인 알고리즘을 사용하여 푸는 것보다 계산식과 몇 개의 루프 문을 통해 푸는 것이 훨씬 성능이 좋습니다. 풀이 위와 같은 식으로 모든 루프를 처리하면 정확도 테스트도 통과하기 어렵습니다. 배열에 접근, 원소 수정과 함께 모든 루프를 돌게 되므로 O(n^2)이 되기 때문입니다. 따라서 각 루프 문을 압축하여 가능한 루프를 한 번에 처리해야 합니다. food_times 배열의 길이를 length로 두고 k와 비교하여 몇 번의 루프를 돌고 난 후 몇 번을 움직이는지 확인하여 풉니다.루프 횟수 : k / length남은 움직임 횟수 : k % length이를 통하여 루프 횟수 loop 보다 ..

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

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값보다 작으면 왼쪽, 크면 오른쪽 자식 노드로 넘기며 선택 위치가 빈칸인 경우 해당 위치에 삽입합니다. 프리오더, 포스트 오더를 한번에 재귀를 사용하지 않고 구현하기 어려우므로 간단하게 재귀 함수를 이용해 순회합니다. 코..

[프로그래머스] 블록 게임

2019 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 블록 게임 [[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0],[0,0,0,0,0,4,4,0,0,0],[0,0,0,0,3,0,4,0,0,0],[0,0,0,2,3,0,0,0,5,5],[1,2,2,2,3,3,0,0,0,5],[1,1,1,0,0,0,0,0,0,5]] 2 programmers.co.kr 문제 확인 구현 문제입니다. 풀이 블록을 3x3 크기기에서 경우의 수를 두어 풉니다. 1 2 3 4 5 6 7 8 9 위와 같은 배치에서 문제에서 주어진 블록의 형태는 ㄴ, ㅗ 를 뒤집거나 회전하여 만들..

[프로그래머스] 후보키

2019 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 문제 확인 데이터베이스의 후보키 특성 유일성, 최소성 특성을 사용하는 문제입니다. set 컨테이너를 통해 유일성, bit 표현식을 통해 최소성을 검사할 수 있습니다. 풀이 bit 표현식을 통해 사용한 칼럼을 표시합니다. 0101 : 0, 2번째 칼럼을 사용, 0011 : 0, 1번째 칼럼 사용 ..

[프로그래머스] 실패율

2019 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 문제 확인 prefix sum 활용 문제입니다. 풀이 입력받은 스테이지를 읽으면서 해당 스테이지에 몇 명이 있는지 기록합니다. 그 후 역순으로 읽어가면서 실패율을 구합니다. 실패율 = ary[i] / SUM( ary[i], ary[i+1], ... ary[N]) 실패율을 전부 구하고 나면 실패율 순서대로 정렬하고 인덱스를 따로 추출하여 출력합니다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15..

[프로그래머스] 오픈 채팅방

2019 카카오 채용 코딩 테스트 문제입니다. 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제 확인 스트링, 쿼리 처리 문제입니다. 풀이 Enter, Leave만 쿼리 (행동 : 아이디)로 저장한 다음 Enter, Change에 대하여 map 컨테이너에 (아이디 : 닉네임) 저장하고 관리합니다. 모든 레코드가 처리되면 쿼리를 읽으면서 처리합니다. 코드 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 31 32..

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

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) 형태로 유지함으로써 로봇 이동, 회전 시 조건 검사..