https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 주어진 조건을 보고 그에 맞는 문자열 처리를 해주면 되는 문제입니다. substr을 사용하여 문제를 해결할 수 있습니다. 문제 접근법 주어진 문자열을 압축하기 위해서 문자열을 자르고 자른 문자열을 주어진 문자열과 비교합니다. 이 때, 자른 문자열의 최대 길이는 주어진 문자열의 길이의 절반입니다. 절반을 초과하는 길이부터는 압축이 불가능하기 때문입니다. 즉..
https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 문제에서 주어진 조건을 그대로 따라가면서 진행하면 풀 수 있는 문제입니다. 문자열을 분리할 수 있는 substr을 사용하면 문제 풀이에 도움이 됩니다. 아래는 코드입니다. 더보기 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 33 34 35 36 37 38..
https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 커서를 왼쪽과 오른쪽으로 모두 움직여봐서 풀 수 있는 문제입니다. 문제 접근법 처음에는 모두 A로 이루어져 있으므로, name의 길이만큼 A로 초기화해줍니다. 커서가 있는 위치의 알파벳이 A이거나 name과 동일하면 수정할 필요가 없으므로, 좌측과 우측으로 커서를 이동시킵니다. 다른 알파벳이 나왔을 경우 커서를 위로 이동 시켰을 때의 갯수와 ..
https://programmers.co.kr/learn/courses/30/lessons/59409?language=mysql 코딩테스트 연습 - 중성화 여부 파악하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 아래는 코드입니다. 더보기 1 2 3 4 5 6 SELECT ANIMAL_ID, NAME, CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spa..
https://programmers.co.kr/learn/courses/30/lessons/59410 코딩테스트 연습 - NULL 처리하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 아래는 코드입니다. 더보기 1 2 3 SELECT ANIMAL_TYPE, IFNULL(NAME, "No name") AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC Colored by 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 BFS를 사용하여 해결할 수 있는 문제입니다. 문제 접근법 전체 범위에 대해서 BFS를 통한 탐색을 시작하되, 그 범위를 한번도 탐색한 적이 없고, 0이 아닐 때 BFS 함수를 호출합니다. BFS가 호출 됬을 때 마다 새로운 영역이 있다는 의미가 되므로 영역 갯수를 증가시켜줍니다. BFS를 통해 영역의 넓이를 구하고 영역의 최대값을 갱신합니다. 모든 탐색이 끝나면 ..
https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr numbers값을 가지고 만들 수 있는 모든 수를 만들고 그 수가 소수인지 판별하는 문제입니다. 문제 접근법 에라토스테네스의 채를 이용하여 소수 판별기를 만들어둔다. string numers를 각각의 숫자로 바꾸어 vector에 저장한다. next_permutation을 이용하여 주어진 숫자로 만들 수 있는 모든 순서를 구현하고 이를 통하여 해당하..
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr numbers의 길이가 20개 이하라는 점과 가능한 연산의 수가 +, - 두 가지라는 점을 먼저 생각해야 합니다. 이것은 모든 케이스에 대해서 계산해도 2의 20승인 1,048,576이므로 시간초과가 발생하지 않는 것을 알 수 있습니다. 문제 접근법 number 배열에 있는 값들을 재귀함수를 이용하여 모든 계..
https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr stack을 사용하여 풀 수 있는 문제입니다. 문제 접근법 stack에 number의 원소 하나를 넣습니다. 다음 원소가 들어가기 전에 stack에 있는 원소가 다음 원소보다 작을 경우 해당 원소를 stack에서 제거하고 k를 1감소시킵니다. 제거가 됬을 경우 다시 stack안에 있는 원소와 다음 원소를 확인합니다. stack에 있는 원소가 다음 원소보다 작다면 이번에도 stack에서 원소를 제거 후 k를 1감소시킵니다. 위 작업을 k가 0이 될 때 까지 반복합니다. stack에 남아있는 값들을 string 배열에 더해주고 reverse ..
https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr sort와 그리디 알고리즘을 사용하면 해결할 수 있는 문제입니다. 문제 접근법 보트에 탈 수 있는 인원의 최대가 2명이라는것을 생각합니다. 가장 베스트한 케이스는 가장 가벼운 사람과 무거운 사람이 탔을때 한계치를 넘지 않는것입니다. 이를 위하여 sort를 사용합니다. 앞과 뒤를 체크하기 위한 index 두개를 준비합니다. 맨 앞 인원과..