https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 주어진 조건을 보고 그에 맞는 문자열 처리를 해주면 되는 문제입니다. substr을 사용하여 문제를 해결할 수 있습니다. 문제 접근법 주어진 문자열을 압축하기 위해서 문자열을 자르고 자른 문자열을 주어진 문자열과 비교합니다. 이 때, 자른 문자열의 최대 길이는 주어진 문자열의 길이의 절반입니다. 절반을 초과하는 길이부터는 압축이 불가능하기 때문입니다. 즉..
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/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 문제 접근법 divisor값이 1일 경우 arr의 배열 값들이 나누어 떨어지므로 arr을 sort하여 리턴해줍니다. divisor값이 1이 아닌 경우 arr배열을 순회하면서 arr배열 원소 값들을 divisor 값과 %연산을 통하여 0이 나오는지 확인합니다. 0이 나올경우 나누어 떨어지는 값이므..
https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 문제 접근법 2가지의 방식으로 풀 수 있습니다. 첫 번째 for문을 통해 순회하면서 이전의 값과 비교합니다. 이전의 값과 같을 경우 계속 진행하고 이전의 값과 다를 경우 이전 값을 저장합니다. for문을 끝까지 돌았을 때 마지막 값을 저장해줍니다. 더보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ..
https://programmers.co.kr/learn/courses/30/lessons/12903 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 문제 접근법 짝수라면 두글자, 홀수라면 한글자라는것을 이용한다. 단어 s의 전체 길이를 구한다 전체 길이가 짝수일 경우 s[전체길이 / 2 - 1]과 s[전체길이 / 2]의 값을 리턴한다 전체 길이가 홀수일 경우 s[전체길이 / 2]의 값을 리턴한다. 아래는 코드입니다. 더보기 1 2 3 4 5 6 7 8 9 10 11 1..
https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 입국심사를 기다리는 사람의 최대수가 10억명인것을 보면 for문을 사용해도 시간초과가 날수있다는 것을 생각하고 다른 방식의 풀이를 생각해야합니다. 문제 접근법 for문으로 해결하기에는 인원수가 너무 많으므로 최소치와 최대치를 설정하고 중간값을 통해 최소, 최대치를 갱신하며 진행하는 이분탐색을 사용한다. 최소치는 1분 걸리는 심사관이 있을 때 입국심사를 기다리는 사..
https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr sort후 routes를 비교하는 방법으로 문제를 해결할 수 있습니다. 문제 접근법 sort를 사용하여 routes를 오름차순으로 정렬한다. 처음 진입한 차량의 나간 시간을 저장한다. 그 다음 차량의 들어온 시간이 저장된 시간보다 작을경우 저장값을 저장값과 들어온 차량의 나가는 시간과 비교하여 작은값으로 바꿔줍니다. 그 다음 차량의 들어온 시간이 저장된 시간보다 클 경우 저장값을 들어온 차량의 나가는 시간으로 변경하고 카메라 수를 증가시킵니다. 아래는 코드입니다. ..
https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 최상단부터 하단까지 거쳐간 숫자의 합을 누적하면서 비교하는 방식으로 해결할 수 있는 문제입니다. 문제 접근법 각 층별로 누적값을 저장하기 위한 배열을 선언한다. 맨 좌측과 맨 우측은 위에서 내려올수 있는 방법이 한가지 뿐임을 안다. 맨 좌측과 우측을 제외하고는 자신의 왼쪽 위와 오른쪽 위에 누적값이 내려올 수 있다는 것을 인지한다. 아래는 코드입니다. 더보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18..
https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 해당 좌표까지 갈 수 있는 경우의 수들을 합쳐서 풀 수 있는 문제입니다. 문제 접근법 시작점을 기준으로 오른쪽 아래쪽으로만 움직일 수 있으므로, 시작점 모든 우측열과 시작점 모든 아래행을 1로 체크한다. 시작점 모든 우측열과 아래행을 확인하며 물이 발견시 그 부분부터 모든 부분을 0으로 바꾸어준다. 오른쪽과 아래쪽만으로 움직일 수 있으므로, 도착지 기..