문제 https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 입출력 해설 skill이 주어질 때 해당 스킬트리에 맞게끔 스킬을 배웠는지 체크하는 문제이다. 해당 문제는 단순하게 skill의 순서만 맞게 스킬이 찍혔는지 체크하면 되는 문제인데, 구현하다보면 그리 단순하지는 않다는 것을알 수 있다. 그래서 필자는 skill의 순서를 하나하나 해시를 이용하여 idx를 맵핑하였다.그렇게 하여서 내가 마지막으로 어떤 스킬을 배웠는지 기억하며 skill_trees를 확인하였다. 순서는 다음과 같다. 1. skill_..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 입출력 해설 1 ~ N까지 순서대로 컨테이너가 오고 있다.하지만 order의 순서대로 택배를 실어야 한다.그렇기에 보조 컨테이너 벨트를 사용하는데 해당 컨테이너는 stack 구조를 이루고 있다. (FILO) 컨테이너에 물건을 차에 싣는 순서는 다음과 같다. 1. 컨테이너에서 나오는 물건을 order순서에 맞으면 싣는다.2. 1번 사항이 맞지 않는다면 보조 컨테이너에 물건이 있는지 확인한다.3. 2번 사항이 맞지 않는다면 보조 컨테이너에 물건을 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 입출력 해설 N행에 4열에 같은 열을 연속해서 밟지 않고 최고점을 얻는다고 할 때 몇 점인지 알아내는 문제이다. X행 Y열에 도착했을 때 얻을 수 있는 최고점이라고 DP 테이블을 정의하고 풀이를 진행하면 된다. 필자는 DP를 재귀방식으로 구현하였다.매개변수는 행(row), 열(col), 경계면(boundary)을 넣어주었다. DP의 로직은1. 현재 행이 경계면에 도착했는지 2. 현재 행, 열에 도착한 적이 있었는지3. 아니라면 열과 다른 곳으로만..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 입출력 해설 해당 문제는 해시에 관한 문제이다.이 문제는 정리를 잘하고 들어가는 것이 좋다. 조건은 다음과 같이 해석할 수 있다. 1. 길이가 1인 모든 단어를 포함한 사전을 초기화한다. == 알파벳으로 dict 초기화하기2. 가장 긴 문자열을 찾아서 색인번호 출력한다. == for문을 돌면서 word를 dict에서 찾는다.3. 색인 번호를 출력 == 해당 word를 dict에서 찾아서 출력한다.4. 입력에서 처리되지 않은 글자..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 입출력 해설 뒤에 있는 숫자 중에서 나보다 큰 가장 가까운 수를 찾아야 된다. 해당 알고리즘은 굉장히 알려진 알고리즘이다.스택 알고리즘 중 boj에 오큰수라고 한다.boj.ma/17298/t inputoutput[1, 2, 3, 4, 5, 6][2, 3, 4, 5, 6, -1] 단순하게 오른쪽에 나보다 큰 수가 있으면 그 큰수를 넣어주면 된다.근데 만약 다음과 같은 예시라면inputoutput[1, 1, 2, 2, 3, 3, 4][2, 2, 3..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 입출력 해설 A, E, I, O, U의 문자만 사용할 수 있으며 길이가 최대 5글자 까지만 등장한다. 그러면 최대로 나올 수 있는 문자는 A ~ UUUUU까지이므로 최대 경우의수는 5 + 5 * 5 + 5 * 5 * 5 ... + 5 * 5 * 5 * 5 * 5가 된다. 모두 더해도 3905밖에 되지 않으므로 충분히 모든 경우의 수를 돌면서 찾아도 빠른 시간 내에 찾을 수 있다. 그래서 백트래킹을 통해서 해당 문제를 접근해보았다. 일단 기본적인 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 입출력 해설 str1, str2가 주어졌을 때 문자를 2개씩 slice하여 교집합 / 합집합 을 리턴하여라. 일단 문제에서 대소문자를 구분하지 않는다고 하였으니 이 점을 생각하면서 봐야한다.두 번째로 2개씩 잘랐을 시 알파벳을 제외한 다른 문자가 있을 시 건너뛰어야 하는 점도 생각해야 한다. 다음과 같이 풀이를 진행하였다.1. 2개씩 잘라서 소문자로 만들고 리스트를 추가한다. (str1, str2)2. 두 개의 리스트를 정렬한다.3. 이중for문을..