알고리즘/프로그래머스
-
[프로그래머스] 외벽 점검 / 2020 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:20
🖇️ 문제 링크 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피" 는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 도중에 주기적으로 외벽의 상태를 점검해야 할 필요가 있습니다. 레스토랑의 구조는 완전히 동그란 모양이고 외벽의 총 둘레는 n미터이며, 외벽의 몇몇 지점은 추위가 심할 경우 손상될 수도 있는 취약한 지점들 이 있습니다. https://programmers.co.kr/learn/courses/30/lessons/60062 📝 문제 분석 레스토랑의 구조가 원형이기 때문에 끝과 처음이 연결되어 있는 구조입니다. 이것을 선형으로 만들어주기 위해 weak = [1, 5, 6, 10]라..
-
[프로그래머스] 가사 검색 / 2020 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:20
🖇️ 문제 링크 코딩테스트 연습 - 가사 검색 친구들로부터 천재 프로그래머로 불리는 "프로도"는 음악을 하는 친구로부터 자신이 좋아하는 노래 가사에 사용된 단어들 중에 특정 키워드가 몇 개 포함되어 있는지 궁금하니 프로그램으로 개발해 달라는 제안을 받았습니다. 그 제안 사항 중, 키워드는 와일드카드 문자중 하나인 '?'가 포함된 패턴 형태의 문자열을 뜻합니다. 와일드카드 문자인 '?'는 글자 하나를 의미하며, 어떤 문자에도 매치된다고 가정합니다. https://programmers.co.kr/learn/courses/30/lessons/60060?language=java 📝 문제 분석 만약 특별한 방법 없이 완전탐색으로 답을 구하고자 한다면 O(가사 개수 * 쿼리 개수 * 쿼리 길이) 정도의 시간 복잡도..
-
[프로그래머스] 기둥과 보 설치 / 2020 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:20
🖇️ 문제 링크 코딩테스트 연습 - 기둥과 보 설치 빙하가 깨지면서 스노우타운에 떠내려 온 "죠르디"는 인생 2막을 위해 주택 건축사업에 뛰어들기로 결심하였습니다. "죠르디"는 기둥과 보를 이용하여 벽면 구조물을 자동으로 세우는 로봇을 개발할 계획인데, 그에 앞서 로봇의 동작을 시뮬레이션 할 수 있는 프로그램을 만들고 있습니다. 프로그램은 2차원 가상 벽면에 기둥과 보를 이용한 구조물을 설치할 수 있는데, 기둥과 보는 길이가 1인 선분 으로 표현되며 다음과 같은 규칙을 가지고 있습니다. https://programmers.co.kr/learn/courses/30/lessons/60061 📝 문제 분석 기둥 → 바닥 위에 있거나 보의 한쪽 끝 부분 위에 있거나, 또는 다른 기둥 위에 있어야 함 보 → 한쪽..
-
[프로그래머스] 자물쇠와 열쇠 / 2020 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:20
🖇️ 문제 링크 코딩테스트 연습 - 자물쇠와 열쇠 고고학자인 "튜브"는 고대 유적지에서 보물과 유적이 가득할 것으로 추정되는 비밀의 문을 발견하였습니다. 그런데 문을 열려고 살펴보니 특이한 형태의 자물쇠로 잠겨 있었고 문 앞에는 특이한 형태의 열쇠 와 함께 자물쇠를 푸는 방법에 대해 다음과 같이 설명해 주는 종이가 발견되었습니다. 잠겨있는 자물쇠는 격자 한 칸의 크기가 인 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 크기인 정사각 격자 형태로 되어 있습니다. https://programmers.co.kr/learn/courses/30/lessons/60059 📝 문제 분석 Key는 회전 횟수에 따라 4가지 종류가 있을 수 있습니다. Lock의 (0, 0)부터 (N - 1, N - 1)까지 4가지 종..
-
[프로그래머스] 괄호 변환 / 2020 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:20
🖇️ 문제 링크 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. https://programmers.co.kr/learn/courses/30/lessons/60058 📝 문제 분석 문제에서 제시하는 순서대로 정확히 구현하기 ⌨️ 코드 import java.util.Arrays; class Solution { public String solution(String p) { if(p.length() == 0)..
-
[프로그래머스] 문자열 압축 / 2020 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:20
🖇️ 문제 링크 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. https://programmers.co.kr/learn/courses/30/lessons/60057 📝 문제 분석 문자열을 1개 단위부터 n/2개 단위까지 전부 압축해보고, 가장 짧은 길이를 리턴한다. ⌨️ 코드 class Solution { public int solution(String s) { int n = s.len..
-
[프로그래머스] 매칭 점수 / 2019 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:20
🖇️ 문제 링크 코딩테스트 연습 - 매칭 점수 프렌즈 대학교 조교였던 제이지는 허드렛일만 시키는 네오 학과장님의 마수에서 벗어나, 카카오에 입사하게 되었다. 평소에 관심있어하던 검색에 마침 결원이 발생하여, 검색개발팀에 편입될 수 있었고, 대망의 첫 프로젝트를 맡게 되었다. 그 프로젝트는 검색어에 가장 잘 맞는 웹페이지를 보여주기 위해 아래와 같은 규칙으로 검색어에 대한 웹페이지의 매칭점수를 계산 하는 것이었다. https://programmers.co.kr/learn/courses/30/lessons/42893?language=java 📝 문제 분석 html 페이지에서 웹페이지의 URL과 외부 링크의 URL을 정규식 매칭을 이용해 찾아낸다. 외부 링크의 개수를 통해 기본 점수를 구한다. 웹페이지들을 각..
-
[프로그래머스] 길 찾기 게임 / 2019 KAKAO BLIND RECRUITMENT - JAVA알고리즘/프로그래머스 2021. 9. 10. 13:20
🖇️ 문제 링크 코딩테스트 연습 - 길 찾기 게임 전무로 승진한 라이언은 기분이 너무 좋아 프렌즈를 이끌고 특별 휴가를 가기로 했다. 내친김에 여행 계획까지 구상하던 라이언은 재미있는 게임을 생각해냈고 역시 전무로 승진할만한 인재라고 스스로에게 감탄했다. 라이언이 구상한(그리고 아마도 라이언만 즐거울만한) 게임은, 카카오 프렌즈를 두 팀으로 나누고, 각 팀이 같은 곳을 다른 순서로 방문하도록 해서 먼저 순회를 마친 팀이 승리하는 것이다. https://programmers.co.kr/learn/courses/30/lessons/42892 📝 문제 분석 node를 y값 내림차순, x값 오름차순으로 정렬 첫번 째 원소를 root로 트리를 이진 트리를 만들자 node = idx, left, right, 각 단..