본문 바로가기

전체 글12

스킬트리(프로그래머스) 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문자열 비교 문제이다. skill 이라는 문자열과 skill_trees 라는 배열이 입력으로 주어질 때 ( ※ skill_trees는 문자열이 담긴 배열이다.) skill_trees에 담긴 각 문자열들 중에서, skill의 순서를 따르는 문자열을 골라 그 개수를 출력하는 문제이다. 문제에 적힌 예시를 적어보면, skill = "CBD" 이고 skill_trees = ["BACDE", "CBADF.. 2020. 4. 14.
탐욕 알고리즘(Greedy algorithm) 매 순간마다 최적의 해를 찾는 문제해결 패러다임 이다. 알고리즘의 작동 방식이 이름과 매우 흡사하다. 간단하게 예를 하나 들어보자. 탐욕 알고리즘을 이용하는 대표적인 문제는 동전 거스름돈 문제이다. 이 문제는 거슬러 받는 동전의 개수를 가장 적게 받아야 하는 문제이다. 동전의 종류는 현실과 마찬가지로 1원, 10원, 50원, 100원, 500원이 있다고 하고 거슬러 받아야 할 돈은 총 1761원이라고 하자. 생각하기 가장 쉬운 방법은, 액수가 가장 큰 동전부터 채워서 주는 것이다. 이렇게 줄 경우 500원 3개 + 100원 2개 + 50원 1개 + 10원 1개 + 1원 1개 ==>> 총 8개의 동전을 주게 된다. 과연 최소한의 개수로 동전을 준 것이 맞을까? 질문의 답은 '예' 다. 다만, 동전 거스름돈.. 2020. 4. 11.
동적 계획법(Dynamic Programming) 문제를 여러개의 작은 문제로 나누고, 작은 문제의 해를 이용하여 더 큰 문제의 해를 찾는 문제해결 패러다임 이다. 설명을 쉽게 하기 위하여 간단하게 예를 들어보자. 동적 계획법을 이용하는 대표적인 문제는 동전 거스름돈 문제이다. 이 문제는 거슬러 받는 동전의 개수를 가장 적게 받아야 하는 문제이다. 동전의 종류는 1원, 3원, 7원, 10원이 있고 거슬러 받는 돈이 총 14원이라고 하자. 생각하기 가장 쉬운 방법은, 액수가 가장 큰 동전부터 채워서 주는 것이다. 이렇게 줄 경우 10원 1개 + 3원 1개 + 1원 1개 ==>> 총 3개의 동전을 주게 된다. 과연 최소한의 개수로 동전을 준 것이 맞을까? 질문의 답은 '아니오' 다. 7원짜리 2개를 주는 방법이 동전을 더 적게 줄 수 있다. 만약, 동전의 .. 2020. 4. 11.