알고리즘/완전탐색 6

프로그래머스 - 모음사전

https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 재귀호출을 활용하여 풀 수 있는 문제이다. 요구사항1. "A","E","I","O","U" 를 이용해서 만들 수 있는 5자리 이하 문장을 만들어야 한다.2. 주어진 문자열이 사전순으로 몇번째에 위치 하는지를 구해야 한다. 우선 사전순으로 들어가야 한다면 다음과 같은 순서로 들어가야 할것이다.AAAAAAAAAAAAAAAAAAAEAAAAIAAAAO...AAAEA...EEAEAA... 이를 구현하기 위해 리스트를 생성하고 재귀호출 하면서 만들어지는 ..

프로그래머스 - 피로도

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr dfs를 연습해볼 수 있는 좋은 문제인 것 같다. 이 문제에서 dfs를 사용해야하는 이유는 다음과 같다.던전을 순차적으로 방문할 필요는 없다.모든 경우를 구하여 최대 방문 횟수를 구해야 한다.때문에 dfs를 구현하여 가능한 모든 경우의 수에서 최대 던전 탐험 횟수를 구하면 된다. import java.util.*;class Solution { public static int count=0; public static boolean[] ..

프로그래머스 - 카펫(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번 문제에서는 입출력의 패턴을 분석하여 풀려고 했다. 가로 * 세로 = brown + yellow(가로-1)*2 + (세로-1)*2 = brown 가로 * 세로가 전체 카펫의 넓이 인데, 세로가 가로보다 더 짧기 때문에 세로값을 이용하여 소인수 분해 공식을 활용 하였다.  세로의 길이가 정해지면 가로의 길이는 자동으로 정해지므로 가로 세로의 길이를 이용하여 조건 2를 사용하여 만족 여부를 확인하고 반환 해주면 정답이 된다.import java..

프로그래머스 - Lv2 소수찾기(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제에서 가장 어려웠던 부분은 입력된 문자열로 만들 수 있는 숫자를 모두 구하는 것 이다. 처음에 dfs 방식을 사용하면 되겠다고 생각을 했는데 dfs를 공부한지 오래되서 다른 풀이를 참고하면서 공부했다. import java.util.*;class Solution { static Set set; static boolean[] visit = new boolean[7]; public int solution(String ..

프로그래머스 - 모의고사(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제의 요구사항만 잘 파악한다면 어려운 문제는 아니다. 하지만 내가 푼 방식은 너무 원시적이라서 정답을 받고 다른 사람 코드도 분석해 봤다. 나는 문제에서 정답의 패턴을 분석했고 입력 배열의 인덱스에 따라서 그 자리에 와야하는 값과 비교하였다. 이러한 비교 함수를 각각의 답안지에 맞게 3개 만들어서 단순비교 후 결과를 반환 하였다. import java.util.*;class Solution { public int[] solution(in..

프로그래머스 - 최소직사각형(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  처음에는 제귀알고리즘을 사용해서 가로 새로가 바뀐 모든 경우의 수에서 넓이의 최소값을 구하려고 했는데 너무 복잡해졌다. 이 문제를 풀면서 너무 알고리즘의 틀에만 박혀서 문제를 풀면 더욱 어려워질 수 도 있다는 것을 알게 되었다. 지금까지 문제를 보면 어떤 알고리즘을 적용 할지부터 생각하는 나 자신을 반성하게 되었다. 정해진 알고리즘을 적용하는것이 아닌 사고방식만 틀어서 적용하면 더욱 쉽게 풀 수 있는 문제가 있는데 이게 바로 그 문제이다.  ..