일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- useRef 지역 변수
- 프로그래머스 K_Digital Training 프론트엔드
- KDT 프로그래머스 데브코스 프론트엔드
- 프로그래머스 데브코스 프론트엔드
- 모던 자바스크립트 Deep Dive
- 프로그래머스 K_Digital Training
- 머쓱이
- react customHook 예시
- 투포인터알고리즘 js
- 인프런 자바스크립트 알고리즘 문제풀이
- KDT 프로그래머스
- Vue3
- 우테캠 회고록
- 프로그래머스 데브코스 프론트엔드 TIL
- 백준 node.js
- 모던 자바스크립트 Deep Dive TIL
- 백준 js
- useEffect return
- TypeScript 문법 소개
- react 프로젝트 리팩토링
- 프로그래머스 데브코스
- Frontend Roadmap
- frontend roadmap study
- K_Digital Training
- 모던 javascript Deep Dive
- 모던 자바스크립트 TIL
- 모던 자바스크립트 딥다이브
- 리팩토링 회고
- Vue3 Router
- 개발자 특강
- Today
- Total
목록백준 node.js (16)
프론트엔드 개발자의 기록 공간
백준 DFS 알고리즘 11725번_트리의 부모 찾기 난이도 : 실버II 해결못한 문제 : 시간초과 문제 설명 입출력 문제 풀이 : 이 문제는 인접 그래프 형식의 문제이다. 배열의 인덱스 자체가 노드번호를 의미하고 배열의 값이 그 노드와 인접한 다른 노드들의 인덱스번호가 들어있는 셈이다. 예를들어 [1, 6], [6, 3] 의 연결 정보가 주어졌을때 양방향 이므로 graph배열 1번의 인덱스에 6번의 값이 있고 반대로 인덱스6번에는 1과 3의 값이 있고 인덱스3에는 6번의 값이 있는 셈이다. 이해가 안된다면 인접그래프를 검색해서 원리를 찾아보면 이해가 갈 것이다. 다시 문제로 돌아가서 인접그래프로 값을 지정해준 후, 방문처리를 위한 배열, 부모노드를 담는 배열을 선언해준 후, graph의 1번 인덱스부터 ..
백준 DFS 알고리즘 2469번_안전 영역 난이도 : 실버I 문제 설명 입출력 문제 풀이 : 문제 설명을 보면 비의 높이가 주어질때 비의 높이보다 낮은 칸들은 빗금으로 그려져있고. 그 후 영역의 요소를 카운트하면 비의 높이에 따른 안전 영역의 요소가 구해진다. 하지만 비의 높이보다 낮은 칸들을 방문처리하고 그 후 다른 영역의 요소를 구하면 두번의 그래프 탐색을 해야해서 로직이 복잡해진다. 반대로 생각하여 비의 높이가 주어질때 비의 높이를 초과(문제 예시에서 4이하니깐 반대는 4초과)하는 영역을 방문처리하고 DFS의 실행횟수를 카운트하면 똑같이 안전영역의 요소를 구할 수 있다. 비의 높이는 1이상 100이하의 정수이므로 0~101의 반복문을 돌면서 DFS를 실행하면된다. 단 한번의 DFS를 실행하고 나면 ..
백준 문자열 알고리즘 10773번_제로 난이도 : 실버IV 문제 설명 입출력 문제 풀이 : input값 순서대로 계산을 해주다가 0이 나오면 마지막에 불렀던 숫자를 빼주면된다. 0이 여러개 나오게 되면 마지막에 불렀던 순으로 올라가면서 값을 빼줘야한다. 즉 마지막에 불렸던 숫자를 빼야하는데 이는 스택을 활용하면 쉽게 구현할 수 있다. 반복문을 통해 값을 체크한뒤 0이 아니라면 스택에 넣어주고 합산을 해주고 0이라면 스택에서 마지막 값을 빼주면된다. //실버4 제로 const solution = (n) => { let sum = 0; //총합 let tmp = []; //스택으로 활용 for (let i = 0; i < n; i++) { //불러주는 수가 0이 아니라면 //스택에 넣고 총합계산 if (in..
백준 DFS 알고리즘 2667번_단지번호붙이기 난이도 : 실버I 문제 설명 문제 풀이 : 이 문제도 기본 DFS 유형을 요구하는 문제이다. 그래프 전체를 순회하면서 방문하지 않았다면 (이 문제에서 1과 0은 아파트의 위치이면서 방문여부로도 활용할 수 있다.) DFS를 호출한다. 여기서 DFS내부적으로 재귀를 부를때마다 선언해둔 글로벌 변수(home)를 한개씩 카운트 해주면서 같은 단지내의 아파트 개수를 세려주고 DFS함수 호출이 끝나면 하나의 단지를 탐색한 것이기 때문에 순서대로 배열에 넣어주면된다. 이후 정렬을 하고 길이 출력을 통해 단지 개수를 파악하고 배열값을 출력하면서 단지내 아파트 개수를 출력하면 된다. //실버1 단지번호붙이기 const solution = () => { let cnt = []..
백준 DFS 알고리즘 4963번_섬의 개수 난이도 : 실버II 문제 설명 입출력 문제 풀이 : 1012_유기농 배추부분이랑 로직은 일치한다. 관련된 로직은 (ghost4551.tistory.com/27) 여기에 상세하게 설명해뒀으니 참고하면 좋을것같다. 한번더 설명하자면 DFS를 활용하여 연결된 요소를 방문처리하고 연결된 집합의 개수를 출력해주면 된다. 여기서 고려해야될게 방문처리는 그래프의 값을 0으로 초기화 시켜 해결할 수 있다. 또한 대각선 이동도 유의해야한다. //실버2 섬의 개수 const solution = () => { //별 섬의 개수 let cnt = 0; //가로 세로 배열 높이 구하기 [w, h] = input .shift() .split(" ") .map((el) => Number(..
백준 DFS 알고리즘 1012번_유기농 배추 난이도 : 실버II 문제 설명 입출력 문제 풀이 : 이 문제는 백준 11724번 연결 요소의 개수 문제와 유사하다. 참고할것(ghost4551.tistory.com/26) 연결 요소 찾기와 유사하게 로직을 작성하되 몇가지만 고려해주면된다. 1. 배추가 위치한 곳은 1이된다. 한번 방문했다면 해당노드를 0의 값으로 만들어준다. (방문처리) 2. 상하좌우 옮겨갈수 있으므로 옮겨주되 그래프의 범위인지 검사 크게 이렇게 두가지만 고려해주면 된다. function solution() { let cnt = 0; //그래프 전체 탐색 for (let i = 0; i < m; i++) { for (let j = 0; j < n; j++) { //그래프의 값을 돌면서 1이 존..