2019 카카오 개발자 겨울 인턴십 (5) 썸네일형 리스트형 [프로그래머스] 징검다리 건너기 / 2019 카카오 개발자 겨울 인턴십 - JAVA 🔗 문제 링크 [프로그래머스] 징검다리 건너기 / 2019 카카오 개발자 겨울 인턴십 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 📝 풀이 과정 돌의 최솟값을 기준으로 이분탐색하는 방법을 사용했다. 범위는 돌의 크기인 1 ~ 200,000,000으로 지정해주었다. N-1번 니니즈까지 길을 건넜다고 가정하고 N번째 니니즈가 길을 건너는 차례라고 생각한다. K번 이내의 거리에 N이상의 값이 존재해야 길을 건널 수 있기 때문에 N미만의 값이 연속적으로 k개 이상 나온다면 길을 N번은 건널 수 없다는 의미가 된다. 따라서 범위를 줄여주고 다시 탐색을 시작해주고, 만약 연속 값이 k보다 작다면 길을 건널 수 있는 경우로 값을 저.. [프로그래머스] 호텔 방 배정 / 2019 카카오 개발자 겨울 인턴십 - JAVA 🔗 문제 링크 [프로그래머스] 호텔 방 배정 / 2019 카카오 개발자 겨울 인턴십 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr 📝 풀이 과정 만약 방을 순차적으로 탐색한다면 시간초과가 발생하게 된다. Disjoint Set과 유사한 방식으로 문제를 풀었는데, k의 범위가 1012이기 때문에 가능한 배열의 범위를 초과해 Map을 사용해 주었다. 만약 방문하지 않은 방이라면 Map에 없기 때문에 바로 배정이 가능하고, 같은 번호가 들어온다면 다음 번호로 방을 배정해주라는 의미로 방번호 + 1을 넣어주었다. 만약 + 1한 방도 이미 Set에 들어가 있는 경우 Set에서 없을 때까지 재귀를 사용해 반환해주었다. 💻 코드 import java.util.*; public class .. [프로그래머스] 불량 사용자 / 2019 카카오 개발자 겨울 인턴십 - JAVA 🔗 문제 링크 [프로그래머스] 불량 사용자 / 2019 카카오 개발자 겨울 인턴십 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 무지는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 📝 풀이 과정 banned_id에 해당하는 아이디를 하나씩 고를 수 있는 조합을 찾는 문제이다. banned_id에 존재하는 *을 .으로 변경한다면 쉽게 정규식을 사용이 가능하다. 이후, str.matches(pattern)을 사용해 문자열이 패턴과 일치 여부를 boolean값으로 받아올 수 있다. 조합을 모두 구했다고 하더라도 중복된 아이디들로 구성된 목록은 제거해주어야하는데 이를 .. [프로그래머스] 튜플 / 2019 카카오 개발자 겨울 인턴십 - JAVA 🔗 문제 링크 [프로그래머스] 튜플 / 2019 카카오 개발자 겨울 인턴십 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 📝 풀이 과정 튜플에는 순서가 있지만 집합에는 순서가 없다는 것이 중요하다. {1} {1,2} {1,2,3} 튜플 (1, 2, 3)을 집합으로 만들면 아래와 같이 구성되는데 잘 살펴보면 길이가 하나씩 증가할 때마다 새로운 원소가 들어오게 되는 것을 알 수 있다. 따라서, 집합을 },{로 분할하고 길이에 따라 정렬하면 튜플이 추가되는 순서.. [프로그래머스] 크레인 인형뽑기 게임 / 2019 카카오 개발자 겨울 인턴십 - JAVA 🔗 문제 링크 [프로그래머스] 크레인 인형뽑기 게임 / 2019 카카오 개발자 겨울 인턴십 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 📝 풀이 과정 열마다 가장 위에 있는 인형들의 위치를 저장할 top 배열을 만들어 0이 아닌 값(인형이 존재)이 나올 때까지 내려 저장해주었다. 바구니는 위에 계속 쌓이는 형태로 Stack과 구조가 동일해 stack으로 생성해 주었다. moves배열을 하나씩 탐색하며 top[move - 1]이 N과 동일하다면 빈 열이기 때문에 무시하고 넘겨주었고, 인형을 집은 경우 top배열을 하나 증가시켜주고 s.. 이전 1 다음