프로그래머스 - 큰 수 만들기 (그리디 알고리즘)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해길이가 최대 1,000,000자리인 숫자 문자열에서 정확히 k개의 숫자를 제거해 가장 큰 수를 만들어야 한다.입력: number = "1924", k = 2가능한 경우: 19, 12, 14, 92, 94, 24결과: "94" 접근 방법모든 조합을 만들어 최댓값을 구할 수도 있겠지만, 1,000,000자리 제한 때문에 사실상 불가능하다.→ 따라서 Greedy 전략을 사용해야 한다. 핵심 아이디어:최종적으로 number.length - k 개의 숫자..
프로그래머스 - 단어 변환 (BFS로 최단 거리 찾기)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해주어진 단어 begin을 target으로 변환하는 최소 단계를 구하는 문제이다. 변환 규칙은 다음과 같다.한 번에 한 개의 알파벳만 바꿀 수 있다.변환된 단어는 반드시 words 집합 안에 존재해야 한다.만약 target이 words에 존재하지 않는 경우에는 변환이 불가능하므로 0을 반환해야 한다. 접근 방법"최단 변환 과정"을 구해야 하므로 최단 경로 탐색 문제로 볼 수 있다.→ BFS(Breadth-First Search)를 사용하면 간단하게..
프로그래머스 - 양궁대회 (완전 탐색)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해라이언이 가장 큰 점수 차이로 이기기 위해 화살을 어떻게 분배해야 하는지를 구하는 문제이다.여러 해답이 가능할 경우 문제 조건에 맞는 경우를 선택하며, 이기는 것이 불가능한 경우에는 [-1]을 반환한다. 접근 방법n이 최대 10으로 작기 때문에, 모든 화살 분배 조합을 고려할 수 있다.따라서 화살 분배 조합을 완전 탐색한 뒤, 조건에 맞는 조합을 선택하면 되겠다! 풀이 1: 단순 완전 탐색맨 처음 떠오른 생각: 문제에서 하란대로 하자!→ 각 점수..
프로그래머스 - 타겟 넘버 (DFS를 구현하는 두가지 방법)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 이해주어진 숫자 배열에서 각 숫자 앞에 + 또는 - 기호를 붙여 연산하여 목표 값(target)을 만드는 문제다.만들 수 있는 모든 경우의 수를 탐색한 뒤, 그중 목표 값과 일치하는 경우의 수를 반환해야 한다. 예를 들어 numbers = [1, 1, 1, 1, 1], target = 3인 경우:-1 +1 +1 +1 +1 = 3 +1 -1 +1 +1 +1 = 3 +1 +1 -1 +1 +1 = 3 +1 +1 +1 -1 +1 = 3 +1 +1 ..
프로그래머스 - 모음 사전 (완전 탐색 VS 수학적 접근)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해'A', 'E', 'I', 'O', 'U' 5개 모음으로만 구성된 길이 5 이하의 모든 단어가 사전순으로 정렬된 사전에서, 특정 단어가 몇 번째인지 찾아야 한다.1. A2. AA 3. AAA4. AAAA5. AAAAA6. AAAAE7. AAAAI8. AAAAO9. AAAAU10. AAAE...접근법 1: 완전 탐색 (순열 생성)문제 그대로 구현하면 되겠지?→ 1) 단어 사전 순서로 된 배열을 생성한 후 2) 원하는 단어의 index+1 을 반환..
프로그래머스 - 소수 찾기 (순열과 소수)
·
Learn/Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 이해주어진 숫자 조각들로 만들 수 있는 모든 조합 중 소수의 개수를 구하는 문제. 핵심 조건:한자리 숫자들이 적힌 종이 조각을 사용조각들을 붙여서 다양한 길이의 숫자 생성생성된 숫자 중 소수인 것의 개수 반환예시: "17" → 가능한 조합: 1, 7, 17, 71 → 소수: 7, 17, 71 (3개)접근 전략두 단계로 나눠서 생각할 수 있겠다: 모든 가능한 숫자 조합 생성 (순열)생성된 숫자들 중 소수 판별1. 순열(Permutation)로 모든 ..