재귀

문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 주어진 2차원 배열(정사각형 모양)을 4등분씩 나눈다음 나누어진 영역의 숫자들이 모두 같은 수라면 그 수로 압축하고, 아니라면 계속 나누고 압축하는 것을 반복해준다. 마지막으로 사각형의 크키가 1이 되면 동작을 멈춘다. 이 문제는 재귀를 통해 풀었다. 계산을 이어가면 갈수록 계산할 대상이 작아지고 각 영역을 나눠 계산하기 때문에 재귀가 맞다고 생각했다. 쿼드압축에 관한 글 코..
문제 설명 문제 풀이 방법 이 문제는 stack을 사용하며 괄호가 올바른지 확인하며 풀이했다. 또한 재귀 방식을 이용해 풀었다. 우선 주어지는 괄호 문자열의 (와 )의 갯수가 같아질 때를 찾아 u와 v로 나눈다. 그리고 나누어진 문자열이 올바른 괄호 문자열인지 확인하는 함수를 작성한다. 이 함수는 stack을 이용해 괄호 문자열이 제대로된 쌍을 갖는지 확인한 뒤 불리언 값을 반환한다. check 함수를 이용해 올바른지 여부를 확인 후 올바르 않다면 문제의 조건을 보며 코드를 작성한다. 코드 function solution(p) { // ()문자열을 올바른 괄호 문자열로 변환해주는 함수 // 빈 문자열이 들어오면 빈 문자열을 반환, // 올바른 괄호문자열이 들어오면 그대로 반환, // 올바르지 않은 괄호 ..
문제 설명 문제 풀이 방법 나는 이 문제를 보고 dfs로 풀자는 생각을 못하고 순열을 이용해 풀려했다..... dfs로 풀어야지 완전탐색이 가능하다고 생각했지만 dfs 구현을 잘 못해서 결국 힌트를 봤다.... dfs는 각 노드별 방문여부를 체크할 수 있는 배열을 만들고 재귀를 이용해 문제를 풀어간다. 내가 낮설었던 것은 재귀한 뒤 방문여부 배열을 다시 초기화 하는 것이였다. 코드 const solution = (k, dungeons) => { // dfs로 문제를 풀면 방문하는 노드가 방문을 했었는지 기록하는 것이 중요하다. (무한 루프에 빠질 수 있음) let answer = 0; let visited = Array(dungeons.length).fill(false); const dfs = (poin..
58청춘
'재귀' 태그의 글 목록