본문 바로가기

알고리즘 풀이/프로그래머스

(36)
[프로그래머스] 광고 삽입 / 2021 KAKAO BLIND RECRUITMENT - JAVA 🔗 문제 링크 [프로그래머스] 광고 삽입 / 2021 KAKAO BLIND RECRUITMENT - JAVA 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 📝 풀이 과정 100시간을 초로 바꾼다면 360,000으로 순차 탐색이 가능하다는 생각이 들었다. 먼저 계산을 쉽게 하기 위해 모든 시간을 초로 변환하였고, playCnt배열을 만들어 동영상의 시작시간에 + 1을하고 종료 시간에 - 1을 해주었다. 다음으로 전체 배열을 순회하면서 이전..
[프로그래머스] 합승 택시 요금 / 2021 KAKAO BLIND RECRUITMENT - JAVA 🔗 문제 링크 [프로그래머스] 합승 택시 요금 / 2021 KAKAO BLIND RECRUITMENT 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 📝 풀이 과정 모든 정점 간의 거리를 구할 수 있는 플로이드 와샬을 사용했다. 플로..
[프로그래머스] 순위 검색 / 2021 KAKAO BLIND RECRUITMENT - JAVA 🔗 문제 링크 [프로그래머스] 순위 검색 / 2021 KAKAO BLIND RECRUITMENT
[프로그래머스] 메뉴 리뉴얼 / 2021 KAKAO BLIND RECRUITMENT - JAVA 🔗 문제 링크 [프로그래머스] 메뉴 리뉴얼 / 2021 KAKAO BLIND RECRUITMENT 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 📝 풀이 과정 메뉴의 코스의 수가 주어지고, 코스의 수별로 가장 많이 시킨 메뉴 조합을 구하는 문제이다. 주문별로 가능한 2이상의 모든 조합을 구한다 조합된 메뉴의 수를 Map에 넣어가며 개수를 누적한다 위의 아이디어로 구현하였다. 먼저 메뉴의 수대로 모아보기 위해 Map courseMap을 생성하였다. 처음 Integer Key는 '메뉴의 수'이고, 이후로는 메뉴의..
[프로그래머스] 징검다리 건너기 / 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의 범위가 $10^{12}$이기 때문에 가능한 배열의 범위를 초과해 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)을 집합으로 만들면 아래와 같이 구성되는데 잘 살펴보면 길이가 하나씩 증가할 때마다 새로운 원소가 들어오게 되는 것을 알 수 있다. 따라서, 집합을 },{로 분할하고 길이에 따라 정렬하면 튜플이 추가되는 순서..