본문 바로가기

프로그래머스56

알고리즘(징검 다리, 카드 게임) [징검 다리] * 조건 출발지점(0)부터 도착지(distance)가 존재한다 그 사이에는 바위들의 위치(rocks[])가 주어진다 제거할 수 있는 바위의 수(n)이 주어진다 주어진 바위들 중 n개만큼 제거했을 때 나올 수 있는 거리의 최솟값 중에서 가장 큰 값을 출력한다 * 알고리즘 이분 탐색 * 로직 주어진 바위들을 오름차순 정렬을 한다 이분 탐색을 사용할 때, mid 값을 거리의 최솟값으로 생각한다 처음엔 현재 돌의 위치 - 출발 위치(base = 0)가 mid보다 작은지를 판별한다 만약 mid 보다 작다면 -> 현재 mid보다 더 낮은 거리가 존재하기 때문에 돌을 제거한다(cnt++) 만약 mid 이상이면 -> base를 현재 돌의 위치로 갱신한다 돌을 제거한 개수가 n보다 크다면 => rear =.. 2019. 11. 27.
프로그래머스(사이클 제거, 가사 검색) - Java [사이클 제거] https://programmers.co.kr/learn/courses/30/lessons/49188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 조건 1~N까지의 노드가 존재한다 노드간의 연결된 간선(edges[][])가 주어진다 (무방향) 주어진 그래프에서는 반드시 하나 이상의 사이클이 존재한다 노드를 딱 하나 제거해서 그래프가 사이클이 없도록 만들 수 있다면 해당 노드의 번호를 누적한 합을 출력한다 * 로직 효율성을 만족시키지 못했다. 일단은 정확성을 만족한 로직에 대해 먼저 작성하고 다시 시도해보려한다 크루스칼 알고리즘을 사용.. 2019. 11. 26.
알고리즘(베스트 앨범, 보행자 천국) [베스트 앨범] * 조건 각 곡에 대한 장르(genres), 재생 횟수(plays)가 주어진다 배열의 인덱스가 해당 곡의 고유 번호이다 정렬해야할 조건이 3가지이다. 재생된 횟수가 가장 많은 장르 순으로 내림차순 정렬 해당 장르 내에서 각 곡마다 재생된 횟수 기준으로 내림차순 정렬 만약 각 곡의 재생된 횟수가 같다면 고유 번호로 오름차순 정렬 만약 해당 장르의 곡이 1개라면 1개만 출력, 2개 이상이라면 2개만 리턴한다 베스트 앨범에 들어갈 노래의 고유 번호를 출력한다 * 알고리즘 HashMap * 로직 해쉬맵 형태를 HashMap 구조를 만든다 -> A 리스트에는 HahsMap 형태로 보관한다 ex. classic, [, , ] 장르별로 재생된 횟수를 HashMap 형태로 보관한다 -> B A의 리스트.. 2019. 11. 22.