목록프로그래머스 풀이 (3)
소소한 개발이야기
📄 전화번호 목록 🔗 문제 풀러가기 문제는 String 배열만을 사용해서 해결하였습니다. 먼저 이번 풀이는 제가 처음 접근했던 방법들과 접근하던 도중 발생했던 오류(런타임 에러) 에 대한 개인적인 생각과 해결과정을 함께 포함시켜 풀이를 해보겠습니다. 최종 소스코드만 보고싶으신 분들은 최종 소스코드만 보기를 클릭하셔도 됩니다. 글의 순서는 다음과 같습니다. 첫 번째 접근 방식과 에러 두 번째 접근 방식과 에러 런타임 에러가 발생하는 이유(개인적인 생각) 런타임 에러를 해결한 방법(최종 소스코드) 첫 번째 접근 방식 첫 번째로 접근했던 방법은 HashMap을 이용해서 문제를 접근하였습니다. 모든 전화 번호 목록을 Map에 입력 후 검사 대상인 전화번호를 제외하고 Map의 모든 값들을 확인하였습니다. 확인하는..
📄 소수 찾기 🔗 문제 풀러가기 문제를 접근하는 방법은 2 가지가 존재 합니다. (더 많을 수도..) 첫 번째로, 숫자 조각으로 만들 수 있는 모든 숫자를 만들고 그 숫자들 중 소수의 개수를 세는 방법. 두 번째로, 숫자 조각으로 구할 수 있는 최대 수 까지 소수를 모두 구한 뒤 모든 소수를 검사하며 해당 소수가 숫자 조각들로 이루어 질 수 있는지 확인하는 방법 이 풀이에서는 두 번째 방법을 사용하여 문제를 해결하였습니다. 문제 풀이의 접근은 다음과 같습니다. 숫자 조각들로 구할 수 있는 가장 큰 값을 구한다. 가장 큰 값까지 소수를 구한다. (에라토스테네스의 체 이용) 구해진 소수들 중 숫자 조각들로 만들 수 있는지 확인한다. 여기서 소수를 구하는 방법은 크게 문제가 되지 않습니다. 하지만 구해진 소수..
📄 스킬트리 🔗 문제 풀러가기 문제에서 주어진 조건은 생각보다 단순합니다. 먼저 모든 문자열은 알파벳 대문자로만 이루어져 있습니다. 그리고 스킬의 총 길이는 최대 26이며 중복 또한 없습니다. 완전 탐색으로 진행해도 쉽게 문제를 해결할 수 있는 유형입니다. 문제 풀이 접근 방식은 다음과 같이 할 수 있습니다. 스킬트리 안에 스킬 순서에 포함되는 스킬이 있을 시 선행 스킬을 배웠는지 확인합니다. 여기서 문제를 조금 단순화 시킬 수 있는데 현재 스킬을 배우기 위해 이전의 모든 선행 스킬을 다 확인 할 필요가 없습니다. 바로 이전의 선행 스킬만 확인하면 됩니다. 만약 이전의 선행 스킬을 배우지 않았다면 이미 이루어 질 수 없는 조합이기 때문입니다. 여기서 주의해야 할 점은 스킬의 index가 0번째라면 out..