문제 정보는 아래 링크를 확인해주세요! [괄호 변환] 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr 문제 접근 방법 제공 받은 문자열을 기준으로 u와 v를 만들어준다. v 문자열을 다시 u와 v로 만들고 v가 빈 문자열이 될 때까지 반복한다.(재귀를 통해 진행) v가 빈 문자열이 되었을 때, u에 대해서 올바른 괄호 문자열인지 검사하고, u와 v에 대한 올바른 괄호 문자열을 만들어준다. 이 과정이 진행되면서 결국 마지막에는 처음 u와 v가 만들어졌던 로직으로 돌아오게 되는데, 이 때의 올바른 괄호 문자열인 ..
알고리즘/연습문제
문제 정보는 아래 링크를 확인해주세요! [문자열 압축] 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 문제 접근 방법 압축 가능한 길이를 1부터 문자열의 절반까지 정해주고, 문자열의 제일 왼쪽부터 압축 가능 길이만큼을 잘라준 문자열이 오른쪽 같은 길이만큼 잘라준 문자열과 같은지 비교 문자열이 같으면 압축 갯수를 더해주고, 다르면 압축 갯수와 현재 압축된 왼쪽 문자열을 합쳐서 전체 문자열에 더해주고 오른쪽 문자열을 왼쪽 문자열에 넣고 재탐색한다. 압축 가능 길이 n에 대하여 문자열 압축을 끝내면, 해당 ..
문제 정보는 아래 링크를 확인해주세요! [블록 게임] 코딩테스트 연습 - 블록 게임 [[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 문제 접근 방법 검은색 블록을 놓을 수 있는 도형은 2x3과 3x2 이 두개의 직사각형 범위 안에서 확인이 가능하고, 수평으로 긴 직사각형 안에서는 윗칸의 2개의 값이 비어있어야 가능 수직으로 긴..
문제 정보는 아래 링크를 확인해주세요! [매칭 점수] 코딩테스트 연습 - 매칭 점수 매칭 점수 프렌즈 대학교 조교였던 제이지는 허드렛일만 시키는 네오 학과장님의 마수에서 벗어나, 카카오에 입사하게 되었다. 평소에 관심있어하던 검색에 마침 결원이 발생하여, 검색개발팀� programmers.co.kr 문제 접근 방법 주어진 1차원 배열에서 문자열을 하나씩 검사한다. 문자열 검사는 정규식 패턴을 통해 현재 페이지와 현재 페이지가 담고 있는 링크 페이지 정보를 가져온다. 현재 페이지에서 얻을 수 있는 기본 점수를 구한다. 기본 점수를 구할 때, 유의해야할점은 문제 주의 사항에도 언급되었듯이 단어의 반복이다. 이 점에 유의해서 기본 점수를 구한다. 현재 페이지에서 이동할 수 있는 링크 페이지 URL을 추가한다...
문제 정보는 아래 링크를 확인해주세요! [길 찾기 게임] 코딩테스트 연습 - 길 찾기 게임 [[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 문제 접근 방법 제공받은 2차원 배열을 Node라는 클래스로 재구성하고, 리스트에 담는다. 리스트를 정렬해주는데, 정렬 순서는 y를 내림차순 - x를 오름차순으로 정렬해준다. 리스트의 요소들을 왼쪽과 오른쪽으로 나눠줄 두 개의 리스트를 만들어준다. 리스트의 첫 번째 있는 Node를 꺼내오고, (탑노드라고 부르겠다) 리스트의 다른 요소들의 x 값이 탑노드의 x값보다 작으면 왼쪽 리스트에 탑노드의 x값보다 크면..
문제 정보는 아래 링크를 확인해주세요! [무지의 먹방 라이브] 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 문제 접근 방법 음식의 시간이 가장 적은 순으로 저장하고, 정렬한다. 시간이 가장 적은 음식부터 다 먹는데 걸리는 시간이 k보다 작으면 k에서 그 시간만큼 빼주고, 다음 음식의 시간에서 현재 음식 시간만큼 빼준다. k보다 클거나 같을 때는 해당 음식 시간 내에 다 먹지 못한다는 의미이므로, 남은 음식의 길이로 k를 나눠주어 몇 번째 먹을 차례인지 구해주고, 현재 남은 음식들 중에 몇 번째 먹을 차례인지 구해준다. [소스 코드] package algorithm.programmers; import java.util.*; /* * 2019 카카오 블라인드 * 무지의 먹방 라이브..
문제 정보는 아래 링크를 확인해주세요! [후보키] 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 방법 컬럼들로 만들 수 있는 조합을 만든다 (비트마스킹) 현재 비트마스킹 조합에 해당하는 컬럼 조합을 만들고 SET 자료구조에 담는다. 만든 컬럼 조합의 수가 로우의 수랑 매칭이 돼야 후보키의 조건을 만족하므로 이를 검사한다. 현재 만든 조합에 대한 비트마스킹이 결과 리스트에 있는 값들과 부분집합인지 검사하고(&연산), 부분집합이 아니라면, 결과 리스트에 추가한다. 비트마스킹이란? n개의 값을 가지고 만들 수 있는 조합을 비트 연산을 통해 문제에서 ..
문제 정보는 아래 링크를 확인해주세요! [실패율] 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 방법 실패 횟수를 저장할 배열을 만들고, 스테이지 배열을 통해 스테이지마다 실패 횟수를 저장 해당 스테이지마다 문제에서 제시된 실패율 공식을 통해 실패율을 구해주고, 실패율을 내림차순으로 정렬해줄 자료구조를 선택한 다음 이 자료구조에 실패율을 추가해준다. 문제에서 유의해야할 점은 실패율을 구할 때 공식이 (실패 횟수/현재 스테이지 도전자 수) 이다. 현재 스테이지의 도전자 수는 이전 스테이지에서 실패했던 인원을 포함하면 안된다는 점에 유의하며 문제를..