본문 바로가기

완전탐색

프로그래머스 - 카펫 level 2 문제 갈색으로 테두리가 1줄 둘러져있고 중앙에는 노란색이 칠해져 있는 카펫이 있다. 갈색 격자의 수와 노란색 격자의 수가 주어질 때, 카펫의 가로 세로 규격을 반환하라. 문제풀이 1. 주어진 노란색 격자로 만들 수 있는 모든 [가로, 세로]를 순회한다. 2. 그렇게 사각형 중 둘레의 길이가 갈색 격자의 수와 같은 것이 있으면 정답을 찾은 것. 3. 노란색 사각형의 가로 세로를 반환하는게 아니라, 거기에 갈색 격자까지 합했을때의 가로 세로 크기를 반환해야하므로 노란 사간형의 가로 세로 길이에 2씩 더해준다. function solution(brown, yellow) { let y = 0 while (++y) { const x = yellow / y if (y > x) { break } const perim.. 더보기
프로그래머스 - 숫자 야구 level 2 문제 숫자 야구 게임은 1~9까지 3자리 임의의 숫자를 정한 뒤 서로가 생각한 숫자를 맞추는 게임이다. 숫자는 맞지만, 위치가 틀렸을 때는 볼 숫자와 위치가 모두 맞을 때는 스트라이크 숫자와 위치가 모두 틀렸을 때는 아웃 입력값 baseball: 질문한 세자리 수, 스트라이크의수, 볼의 수를 담은 2차원 배열 출력값 정답일 수 있는 숫자의 수 문제풀이 1. 정답 후보가 될 수 있는 가장 작은값 123 부터 가장 큰 값 987까지 순회하며 정답인지 확인한다. 2. 100처럼 0이 포함되어있거나 112 와 같이 같은 수가 중복된 경우는 답이 될 수 없는 숫자이므로 제외한다. 3. 정답후보와 질문한 세자리 수를 비교해봤을떄 스트라이크나 볼의 갯수가 딱 맞아 떨어지지 않는 경우 정답이 아니므로 제외한다. fun.. 더보기
프로그래머스 - 소수 찾기 level 2 마음을 급하게 먹으니 처음 시도에서는 잘 풀리지 않았다. 차분하게 경우의 수를 트리 형태로 그려 본 것이 문제풀이에 도움이 됐다. 문제 한자리 숫자가 적힌 종이 조각이 있다. 이를 붙여 소수를 몇개 만들 수 있는지 반환하라. 입력값 numbers: 0-9사이의 숫자로 구성된 문자열. 0 < numbers.length i+2)) for (let x = 2; x * x { for (let i = 0; i < numbers.length; i++) { if (!seen.has(i)) { const x = prefix + numbers[i] if (primes.has(x*1)) { ans.add(x*1) } seen.add(i) generate(x, seen) seen.delete(i) } } } generate.. 더보기