알고리즘 문제풀이
-
프로그래머스 베스트앨범 자바(java) 풀이 Level 3 해시(Hash) 베스트앨범 문제 풀이 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두개씩 모아 베스트 앨범을 출시하려고 한다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록한다. 장르 종류는 100개 미만이다. 장르에 속한 곡이 하나라면, 하나의 곡만 선택한다. 모든 장르는 재생된 횟수가 다르다. => 같은 재생횟수를 가지지 않는다 문제 풀이 HashMap 자료구조를 이용하여 문제를 풀 수 있습니다. 이 자료구조는 순서가 없으며 key, value로 저장합니다. 중복도 없습니다 key값으로 장르이름을 이..
[HashMap] 프로그래머스 level3 베스트앨범 자바 풀이프로그래머스 베스트앨범 자바(java) 풀이 Level 3 해시(Hash) 베스트앨범 문제 풀이 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두개씩 모아 베스트 앨범을 출시하려고 한다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록한다. 장르 종류는 100개 미만이다. 장르에 속한 곡이 하나라면, 하나의 곡만 선택한다. 모든 장르는 재생된 횟수가 다르다. => 같은 재생횟수를 가지지 않는다 문제 풀이 HashMap 자료구조를 이용하여 문제를 풀 수 있습니다. 이 자료구조는 순서가 없으며 key, value로 저장합니다. 중복도 없습니다 key값으로 장르이름을 이..
2020.05.10 -
프로그래머스 H-Index 자바(java) 풀이 Level 2 정렬 H-Index 문제 정리 어떤 과학자의 H-Index: 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값 논문별 인용 횟수는 0회 이상 10,000회 이하이다. 문제 설명 h-index의 정의를 잘 이해하셔야 합니다. 예를들어 {7.8.9.9}가 주어졌다고 합시다. 그러면 여기서 h-index는 몇이 될까요??? 답이 없다고 생각한다면 잘 못 이해하셨습니다. 답은 4 입니다. h값이 인용횟수 안에 있으라는 법은 없습니다. 4번 이상 인용된게 4개 있고 나머지 논문이 4번 이하(0번) 인용되었으므로 최대 h는 4가 맞습니다 문제 풀이 문제 그대로 풀이 하면됩니다. 쉽게 풀이하기..
[정렬] 프로그래머스 level2 H-Index 자바 풀이프로그래머스 H-Index 자바(java) 풀이 Level 2 정렬 H-Index 문제 정리 어떤 과학자의 H-Index: 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값 논문별 인용 횟수는 0회 이상 10,000회 이하이다. 문제 설명 h-index의 정의를 잘 이해하셔야 합니다. 예를들어 {7.8.9.9}가 주어졌다고 합시다. 그러면 여기서 h-index는 몇이 될까요??? 답이 없다고 생각한다면 잘 못 이해하셨습니다. 답은 4 입니다. h값이 인용횟수 안에 있으라는 법은 없습니다. 4번 이상 인용된게 4개 있고 나머지 논문이 4번 이하(0번) 인용되었으므로 최대 h는 4가 맞습니다 문제 풀이 문제 그대로 풀이 하면됩니다. 쉽게 풀이하기..
2020.05.09 -
프로그래머스 타겟넘버 자바(java) 풀이 Level 2 BFS/DFS 타겟넘버 문제 정리 n개의 음이아닌 정수가 있다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 한다. 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하여라 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1이상 50이하의 자연수 이다. 문제 풀이 이 문제가 프로그래머스에는 BFS/DFS로 분류되어 있지만 저는 조합을 이용하여 풀었습니다. 조합을 이용하여 모든 경우의 수를 따져주었습니다. 1,2,...len개 선택하는 경우 모두 따져주었습니다. len(numbers의 개수) 개중 i개 선택하기 예를들어 1개를 선택한다면 1개만 visited가 true로 될 것입니다. 그러면 하나만 더하기..
[조합] 프로그래머스 level2 타겟넘버 자바 풀이프로그래머스 타겟넘버 자바(java) 풀이 Level 2 BFS/DFS 타겟넘버 문제 정리 n개의 음이아닌 정수가 있다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 한다. 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하여라 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1이상 50이하의 자연수 이다. 문제 풀이 이 문제가 프로그래머스에는 BFS/DFS로 분류되어 있지만 저는 조합을 이용하여 풀었습니다. 조합을 이용하여 모든 경우의 수를 따져주었습니다. 1,2,...len개 선택하는 경우 모두 따져주었습니다. len(numbers의 개수) 개중 i개 선택하기 예를들어 1개를 선택한다면 1개만 visited가 true로 될 것입니다. 그러면 하나만 더하기..
2020.05.08 -
프로그래머스 카펫 자바(java) 풀이 Level 2 완전탐색 카펫 문제 정리 카펫은 중앙에는 빨간색, 테두리 1줄은 갈색으로 칠해져 있었다. 카펫의 갈색격자 수, 빨간색 격자 수는 알고 있다. 카펫의 가로, 세로 크기를 순서대로 담아 return 하여라. 카펫의 가로 길이 >= 세로길이 문제 풀이(Solution) level2의 문제이지만 level1이 더 맞지 않나 생각합니다. 카펫의 갈색의 개수와 빨간색의 개수를 더하여 카펫에서 총 격자의 개수를 구합니다. 총 격자 개수의 약수의 쌍을 구합니다. brown=10, red=2 인 경우 총 격자의 개수는 12입니다. 이때 카펫은 다음과 같이 가능합니다(1,12), (2,6), (3,4), (4,3), (6,2), (12,1)하지만 행의 길이가 3보다 작..
[완전탐색, 약수] 프로그래머스 level2 카펫 자바 풀이프로그래머스 카펫 자바(java) 풀이 Level 2 완전탐색 카펫 문제 정리 카펫은 중앙에는 빨간색, 테두리 1줄은 갈색으로 칠해져 있었다. 카펫의 갈색격자 수, 빨간색 격자 수는 알고 있다. 카펫의 가로, 세로 크기를 순서대로 담아 return 하여라. 카펫의 가로 길이 >= 세로길이 문제 풀이(Solution) level2의 문제이지만 level1이 더 맞지 않나 생각합니다. 카펫의 갈색의 개수와 빨간색의 개수를 더하여 카펫에서 총 격자의 개수를 구합니다. 총 격자 개수의 약수의 쌍을 구합니다. brown=10, red=2 인 경우 총 격자의 개수는 12입니다. 이때 카펫은 다음과 같이 가능합니다(1,12), (2,6), (3,4), (4,3), (6,2), (12,1)하지만 행의 길이가 3보다 작..
2020.05.08 -
sw expert academy 5656 구슬 깨기 자바(java) 풀이 모의 SW 역량 테스트 sw expert academy 5656 구슬 깨기 문제정리 구슬을 쏘아 벽돌을 깨드리려 한다. 벽돌이 있는 공간의 크기는 WxH이다. 구슬은 좌우로만 움직일 수 있어서 항상 맨 위에 있는 벽돌만 깨트릴 수 있다. 벽돌은 숫자 1~9로 표현되며, 구슬이 명중한 벽돌은 상하좌우로(벽돌에 적힌 숫자-1)칸 만큼 같이 제거된다. 빈 공간이 있을 경우 벽돌은 밑으로 떨어지게 된다. N개의 벽돌을 떨어트려 최대한 많은 벽돌을 제거하려고 한다. 벽돌을 떨어트린 후 남은 벽돌의 개수를 구하여라. 문제 풀이 모든 경우를 따져주기 위해서 중복 순열을 구해야 합니다. N이 3인 경우 000 ~ 999 (W=10)까지 모두 시뮬..
[중복순열, BFS] SWEA 5656번 구슬 깨기 자바 풀이 (모의 sw 역량 테스트)sw expert academy 5656 구슬 깨기 자바(java) 풀이 모의 SW 역량 테스트 sw expert academy 5656 구슬 깨기 문제정리 구슬을 쏘아 벽돌을 깨드리려 한다. 벽돌이 있는 공간의 크기는 WxH이다. 구슬은 좌우로만 움직일 수 있어서 항상 맨 위에 있는 벽돌만 깨트릴 수 있다. 벽돌은 숫자 1~9로 표현되며, 구슬이 명중한 벽돌은 상하좌우로(벽돌에 적힌 숫자-1)칸 만큼 같이 제거된다. 빈 공간이 있을 경우 벽돌은 밑으로 떨어지게 된다. N개의 벽돌을 떨어트려 최대한 많은 벽돌을 제거하려고 한다. 벽돌을 떨어트린 후 남은 벽돌의 개수를 구하여라. 문제 풀이 모든 경우를 따져주기 위해서 중복 순열을 구해야 합니다. N이 3인 경우 000 ~ 999 (W=10)까지 모두 시뮬..
2020.05.07 -
sw expert academy 2117번 홈 방법 서비스 자바(java) 풀이 모의 SW 역량 테스트 sw expert academy 2117번 홈 방범 서비스 문제정리 홈 방범 서비스는 마름모 모양으로만 제공된다. 서비스 영역의 크기 K가 커질 수록 운영비용이 커진다. 운영 비용 = K x K + (K - 1) x (K - 1) / K=2 일때 운영 비용은 2 x 2 + 1 * 1 = 5 이다. 이는 서비스 영역의 면적과 동일하다 도시를 벗어난 영역에 서비스를 제공해도 운영 비용은 변경되지 않는다. 홈 방범 서비스를 제공받는 집들은 각각 M의 비용을 지불 할 수 있다. 손해를 보지 않는 한에서 최대한 많은 집에 홈방법 서비스를 제공하려고 한다. 가장 많은 집들에 제공하는 서비스 영역을 찾고, 그 때의..
[완전 탐색, 맨해튼 거리] swea 2117번 모의 sw 역량 테스트 :: 홈 방범 서비스 자바 풀이sw expert academy 2117번 홈 방법 서비스 자바(java) 풀이 모의 SW 역량 테스트 sw expert academy 2117번 홈 방범 서비스 문제정리 홈 방범 서비스는 마름모 모양으로만 제공된다. 서비스 영역의 크기 K가 커질 수록 운영비용이 커진다. 운영 비용 = K x K + (K - 1) x (K - 1) / K=2 일때 운영 비용은 2 x 2 + 1 * 1 = 5 이다. 이는 서비스 영역의 면적과 동일하다 도시를 벗어난 영역에 서비스를 제공해도 운영 비용은 변경되지 않는다. 홈 방범 서비스를 제공받는 집들은 각각 M의 비용을 지불 할 수 있다. 손해를 보지 않는 한에서 최대한 많은 집에 홈방법 서비스를 제공하려고 한다. 가장 많은 집들에 제공하는 서비스 영역을 찾고, 그 때의..
2020.05.06