반응형

dfs 41

백준 16234: 인구 이동 - javascript(bfs)

문제 출처 https://www.acmicpc.net/problem/16234 정답 풀이 bfs 알고리즘을 활용했다.  - 일단 주어진 board의 전체를 돈다.   - 이때 한번 방문한 위치는 안간다.  - 모든 board를 다 돌았을 때 그 어떤 값도 변경되지 않는다면 반복문에서 break를 한다.  - 한번 방문한 곳에서 bfs 함수를 돌린다.    - 이때 arr 배열에 조건에 맞는 (L 이상 R이하 차이) 위치들을 push 한다.  - arr의 위치들의 board 값을 다 더하고 평균을 내서 새롭게 board에 값을 넣어준다.  정답 코드 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')cons..

프로그래머스: 미로 탈출 명령어 - 실수 축제 (그래프 탐색에서 DFS와 BFS의 사용 )

아래 세가지 이유에 대해 알아보자.  - 그래프 탐색에서 DFS와 BFS 차이점- DFS: 스택, BFS:큐를 사용하는 이유 - 각 기법을 언제 사용하는지  ## DFS와 스택 dfs는 그래프 탐색 시 "한 방향으로 끝까지 탐색하고, 더이상 갈 곳이 없으면 되돌아와서 다른 경로를 탐색하는" 방법이다.이 방법은 재귀적인 탐색을 요구한다. ### 스택을 사용하는 이유 - LIFO(Last In First Out) : 스택은 마지막에 삽입된 요소를 가장 먼저 꺼내는 자료구조다. dfs에서는 가장 최근에 발견된 노드를 먼저 탐색해야 하기 때문에, 노드를 탐색하면서 경로를 쌓아두었다가 더이상 갈 곳이 없을 때 되돌아가는데 적합하다.   dfs에서 A 에서 출발해서 E를 찾는 과정을 살펴보자. A에서 출발하여 B로..

프로그래머스: 주사위 고르기 - javascript(조합, dfs, 이분탐색)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/258709 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr전체 흐름 아무래도 문제의 전체흐름과 어떤 알고리즘을 사용했는지부터 짚고 가는 것이 좋겠다.  1. 주사위 선택하기- 조합 함수를 사용했다.  - ex) n이 4일 때, 주사위는 1,2,3,4가 있다. => 내가 주사위를 선택할 경우의 수는 "[1,2], [1,3],[1,4],[2,3],[2,4],[3,4]" 인 경우가 될 것이다.  2. 선택할 주사위 중 각각 하나의 수 선택하기 - df..

프로그래머스: 양과 늑대 - javascript(back이 가능한 dfs)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 신박한 문제였다.자신과 연결된 자식 node로 이동할 수 있는 것은 기본으로 + 다시 부모 노드를 통해 다른 node로 이동이 가능하다.   무슨 말이냐?  문제에 최적의 이동경로가 이렇다고 말해준다.  즉, 0 => 1=> 8 => 7 => 9 => 4 => 6 =>5 의 이동경로라는 것이다. 이 이동경로를 아래 사진을 눈으로 따라가보자.  기존 이진트리의 부모 노드 =>..

프로그래머스: 다단계 칫솔 판매 - javascript(구현 및 dfs)

깔끔한 문제였던 것 같다... 내가 풀었기 때문에 ^^ 좋은 문제인 것 처럼 느껴짐 ㅎㅎ  문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 힌트  1) 객체를 2개 생성 - 각 사람을 index로 활용하기 위한 map 객체 - 각 사람을 key로, 추천인을 value로 한 map 객체   2) 현재 사람의 이익을 계산하는 함수 - 현재 사람은 90% 를 가지고, 다음 추천인에게는 절사한 10%를 준다. => 즉, 추천인의 10%..

프로그래머스: 메뉴 리뉴얼- javascript(재귀 이용한 조합, 객체)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트 주문 목록과 코스 길이 배열을 기반으로, 각 주문에서 특정 길이의 메뉴 조합을 추출하여 가장 많이 주문된 메뉴 조합을 찾는 문제다. 주문에서 메뉴 조합 생성: 각 주문을 순회하며, 길이 n의 모든 메뉴 조합을 생성합니다. 이때 조합은 사전 순서로 정렬된 문자열로 변환합니다.조합의 빈도수 계산: 생성된 메뉴 조합을 Map에 저장하고, 빈도수를 계산합니다. 조합이 이미 존재하면..

dfs, 완전탐색, 백트래킹 관련 지식 정리

01) - return : 값을 반환하거나, 함수를 종료한다는 뜻 - 이것의 출력은 3 2 1 - 자 봐봐. else { //이 부분은 또 다른 함수로 넘어가기전 해결하고 갈 것을 넣는것이다. DFS(L-1) // } - 이것의 출력은 1 2 3 설명) 모든 함수는 스택에 저장되죠? 콜스택 하잖아요. 함수가 호출되면 스택에 함수 정보가 저장되는 것. 재귀함수도 함수니까 스택에 저장되죠 (스택프레임이라고 한다.) - 스택프레임이란 (매개변수 L에 대한 정보, 지역변수, 복귀주소) 정보를 가지고 있음. - D(3) => D(2) => D(1) => D(0) 순으로 저장된다. - D(0)되자마자 return 으로 함수가 끝난다. - 함수 끝나면 딱 스택프레임이 사라진다. - D(0)이 끝나면서 복귀주소였던 D..

백준 1189: 컴백홈 - javascript(dfs)

문제 출처 https://www.acmicpc.net/problem/1189 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net 문제 한수는 캠프를 마치고 집에 돌아가려 한다. 한수는 현재 왼쪽 아래점에 있고 집은 오른쪽 위에 있다. 그리고 한수는 집에 돌아가는 방법이 다양하다. 단, 한수는 똑똑하여 한번 지나친 곳을 다시 방문하지는 않는다. cdef ...f ..ef ..gh cdeh cdej ...f bT.. .T.e .Td. .Tfe bTfg bTfi .Tde a.....

백준 21736: 헌내기는 친구가 필요해 - javascript(dfs)

문제 출처 https://www.acmicpc.net/problem/21736 21736번: 헌내기는 친구가 필요해 2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고 www.acmicpc.net 문제 2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고 싶다. 도연이가 다니는 대학의 캠퍼스는 �×�$N \times M$ 크기이며 캠퍼스에서 이동하는 방법은 벽이 아닌 상하좌우로 이동하는 것이다. 예를 들어, 도연이가 (�$x$, �..

반응형