본문 바로가기

정리/알고리즘53

프로그래머스 - 약수의 개수와 덧셈 프로그래머스 (월간 코드 챌린지 시즌2) - 약수의 개수와 덧셈 해당 문제는 약수를 구하는 알고리즘을 통해 약수의 개수를 구함으로서 빠르게 풀 수 있었습니다. 이전이라면 1~n까지 반복문을 돌며 n을 나눈 나머지가 0인 것을 약수로 판단하였는데, 지금은 제곱근을 구하고 1부터 제곱근(sqrt(n)) 까지의 반복문중 나머지가 0인 것과 몫이 약수라는 것을 쉽게 구할 수 있었습니다. public int solution(int left, int right) { int answer = 0; for (int i = left; i 2022. 4. 19.
프로그래머스 - 소수만들기 프로그래머스 - 소수만들기 해당 문제는 재귀방식으로 주어진 숫자 배열중 3개를 선택해 더한 숫자가 소수이면 카운팅하고 아닌경우 0을 return 하여 최종적으로 만들수 있는 소수의 갯수를 return 해야하는 문제였습니다. 해당 문제는 재귀 형식으로 풀었고, 넘겨주는 nums는 넘어온 nums에서 자신 이후의 숫자들을 넘겨 최종 depth가 2인 경우 남은 배열의 숫자들을 넘어온 addedNum과 더해 해당 숫자가 소수인경우 1을 return 하고 아니면 0을 return하는 식으로 구현했습니다. public int solution(int[] nums) { return dfs(0, 0, nums); } private int dfs(int depth, int addedNum, int[] nums) { in.. 2022. 4. 18.
프로그래머스 - [1차] 뉴스 클러스터링 프로그래머스 - [1차] 뉴스 클러스터링 해당 문제는 입력 받은 문자열들을 문제의 조건에 맞는 집합으로 변경하면서 중복 원소를 허용 하므로 해시로 구현 했습니다. 이후 교집합과 합집합은 문제 설명 그대로 구현하였습니다. public int solution(String str1, String str2) { Map str1Set = getSet(str1); Map str2Set = getSet(str2); if (str1Set.isEmpty() && str2Set.isEmpty()) { return 1; } double intersectionCount = getIntersection(str1Set, str2Set); double unionCount = getUnionCount(str1Set, str2Set).. 2022. 4. 13.
프로그래머스 - 괄호 변환 프로그래머스 (카카오 블라인드 테스트) -괄호 변환 해당 문제는 문제 내용 그대로 구현하였습니다. 이를 구현하기 위해 스택을 사용 하였습니다. u 와 v 를 나누는 기준을 스택이 empty가 되는 순간을 기준으로 u,v를 나누었고 스택에 넣는 기준은 스택의 peek값과 비교하는 값이 다른 경우에 pop 같은 경우에 push를 해주어 최초 균형잡힌 괄호 문자열이 되는 순간의 index 값을 구하였습니다., 올바른 괄호 문자열인 경우는 스택에 '(' 인 경우에만 푸쉬를 하고 스택이 empty가 아닌 상태에서 ')' 문자를 만난 경우 스택에서 pop을 해주는 방식으로 최종적으로 스택이 empty인 경우 올바른 괄호 문자열인 것으로 판단 했습니다. public String solut.. 2022. 4. 13.