완전탐색 16

백준 1759 (암호 만들기) - 조합알고리즘

문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한 정렬된 문자열을 선호하는 조교들의 성향으로 미루어 보아 암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었을 것이라고 추측된다. 즉, abc는 가능성이 있는 암호이지만 bac는 그렇지 않다. 새 보안 시스템에서 조교들이 암호로 사용했을 법한 문자의 종류는 C가지가 있다고 한다. 이 알파벳을 입수한 민식, 영..

백준 2447 (별 찍기 -10)

문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. 풀이 완전탐색 알고리즘에서 분할정복 알고리즘을 이용해서 푸는 문제다. 재귀를 이용해서 풀면쉽게 풀 수 있다. N = 27 일 때, 그림을 보면 N = 9 인 도형이 총 8개 있는 것을 알 수 있다. N = 9 일 때, 그림을 보면 N = 3 인 도형이 총..

프로그래머스 완전탐색 Level 2 (카펫)

문제 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다..

프로그래머스 완전탐색 Level 2 (소수 찾기)

문제 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 풀이 두가지 알고리즘을 사용 하였다. conpulake.tistory.com/72 순열, 조합, 부분집합, 멱집합 정리 완전 탐색은 모든 경우의 수를 따져 찾는 경우를 말한다. 자주 사용 되는 이론을 정리 해두려..

순열, 조합, 부분집합, 멱집합 정리

완전 탐색은 모든 경우의 수를 따져 찾는 경우를 말한다. 자주 사용 되는 이론을 정리 해두려고 한다. 순열 : n개의 원소 중 r개의 원소를 순서가 유효하게 꺼내는 경우의 수( 중복을 허용함) 조합 : n개의 원소 중 r개의 원소를 순서가 유효하지 않게 꺼내는 경우의 수(중복을 허용하지 않음) 부분 집합 : 하나의 집합을 이루는 원소들 멱집합 : 공집합을 포함한 모든 집합 순열 집합 A = {a, b, c, d} 일 때 이중 2개의 원소를 뽑는 경우의 수는 {ab, ac, ad, ba, bc, bd, ca, cb, cd, da, db, dc}가 된다. 방식은 재귀적인 방식을 통해 구현하였다. ab, ac 가 선택되는 과정을 보여주면 result = [a, b] arr = [ c, d] 이 상태에서 arr..

프로그래머스 완전탐색 Level 1 (모의고사)

문제 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주..