알고리즘
-
[프로그래머스] 프렌즈4블록 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [1차] 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다. 만약 판이 위와 같이 주어질 경우, 라이언이 2×2로 배치된 7개 블록과 콘이 2×2로 배치된 4개 블록이 지워진다. https://programmers.co.kr/learn/courses/30/lessons/17679 📝 문제 분석 지워지는 조건에 만족하는 2 * 2모양이 여러 개 있다면 한꺼번에 지워진다고 했으므로, 모든 칸을 순회하면서 2 * 2 모두 같은 모양을 만족하는 칸에 표시를 합니다. ( visited[][] ..
-
[프로그래머스] 캐시 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [1차] 캐시 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다. https://programmers.co.kr/learn/courses/30/lessons/17680 📝 문제 분석 LRU 캐시를 구현하는 문제입니다. 캐시 사이즈만큼 최근에 사용한 도시 순서대로 캐시에 넣습니다. 도시를 찾을 때, 캐시에 있는 도시라면 가장 최근에 사용한 것..
-
[프로그래머스] 뉴스 클러스터링 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [1차] 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. https://programmers.co.kr/learn/courses/30/lessons/17677 📝 문제 분석 서로의 집합에 원소가 있는지 확인하는 연산을 해야하고, 중복되는 원소가 있을 수 있기때문에 자바에는 멀티셋이 없으므로 형태의 맵을 사용합니다. 다중 집..
-
[프로그래머스] 다트 게임 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [1차] 다트 게임 카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~ 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. https://programmers.co.kr/learn/courses/30/lessons/17682 📝 문제 분석 입력으로 "점수|보너스|[옵션]" 형태의 문자열 3세트가 들어옵니다. 점수, 보너스, 옵션을 정규식 매칭으로 3개의 그룹으로 나누어줍니다. 스타상(*)은 해당 점수와 바로 전에 얻은 점수를 각각 2배로 만..
-
[프로그래머스] 비밀 지도 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA알고리즘/프로그래머스 2021. 9. 8. 21:45
🖇️ 문제 링크 코딩테스트 연습 - [1차] 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. https://programmers.co.kr/learn/courses/30/lessons/17681 📝 문제 분석 두 장의 지도를 겹칠 때, 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽입니다. 어느 하나라도 참이라면 되기 때문에 비트마스킹 OR연산을 사용합니다. ..
-
[프로그래머스] 시험장 나누기 / 2021 카카오 채용연계형 인턴십 - JAVA알고리즘/프로그래머스 2021. 9. 6. 23:00
🖇️ 문제 링크 코딩테스트 연습 - 시험장 나누기 카카오 인턴을 선발하는 코딩 테스트 시험장이 하나의 이진 트리 형태로 연결되어 있습니다. 아래 그림은 12개의 시험장이 연결된 예시입니다. 하나의 노드는 하나의 시험장을 나타냅니다. 검은 바탕의 흰 숫자는 해당 시험장의 고유 번호(ID)를 나타냅니다. 2-1. 시험장이 n개 있다면, 시험장의 고유 번호는 0부터 n-1까지 부여됩니다. 노드 안의 빨간 숫자는, 해당 시험장의 응시자 수를 나타냅니다. https://programmers.co.kr/learn/courses/30/lessons/81305 📝 문제 분석 그리디, 최적화 결정 문제, 트리 등 복합적인 풀이가 필요한 문제였습니다. k개의 그룹으로 나누었을 때, 최소화된 최대 그룹의 인원을 리턴해야 하..
-
[프로그래머스] 미로 탈출 / 2021 카카오 채용연계형 인턴십 - JAVA알고리즘/프로그래머스 2021. 9. 6. 23:00
🖇️ 문제 링크 코딩테스트 연습 - 미로 탈출 신규 게임 '카카오 미로 탈출'이 출시되어, 라이언 이 베타테스터로 참가했습니다. 위 예시 그림은 카카오 미로 탈출의 초기 상태를 나타냅니다. 1번부터 3번까지 번호가 붙어있는 3개의 방이 있고, 방과 방 사이를 연결하는 길에는 이동하는데 걸리는 시간이 표시되어 있습니다. 길은 화살표가 가리키는 방향으로만 이동할 수 있습니다. 미로에는 함정이 존재하며, 함정으로 이동하면, 이동한 함정과 연결된 모든 화살표의 방향이 바뀝니다. https://programmers.co.kr/learn/courses/30/lessons/81304 📝 문제 분석 평범한 다익스트라 문제에 트랩이라는 매커니즘을 적용시켜야 하는 문제입니다. 트랩은 최대 10개가 있을 수 있기 때문에 2..
-
[프로그래머스] 표 편집 / 2021 카카오 채용연계형 인턴십 - JAVA알고리즘/프로그래머스 2021. 9. 6. 22:59
🖇️ 문제 링크 코딩테스트 연습 - 표 편집 업무용 소프트웨어를 개발하는 니니즈웍스의 인턴인 앙몬드는 명령어 기반으로 표의 행을 선택, 삭제, 복구하는 프로그램을 작성하는 과제를 맡았습니다. 세부 요구 사항은 다음과 같습니다 위 그림에서 파란색으로 칠해진 칸은 현재 선택된 행 을 나타냅니다. 단, 한 번에 한 행만 선택할 수 있으며, 표의 범위(0행 ~ 마지막 행)를 벗어날 수 없습니다. https://programmers.co.kr/learn/courses/30/lessons/81303 📝 문제 분석 최대 100만개의 원소가 있고, 최대 20만번의 명령을 수행해야 합니다. 삭제 명령이 있기 때문에 배열을 사용하게 된다면 시간 내에 수행할 수 없습니다. 양방향 연결리스트를 구현하여 원소 삭제와 원소 복원..