반응형

분류 전체보기 672

백준 17136번 색종이 붙이기 C++ 브루트포스 알고리즘, DFS, 백트래킹

리뷰 아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ 재귀 너무 싫다.https://www.acmicpc.net/problem/17136  문제 풀이input 함수를 통해 맵을 초기화 해주고 1의 총 개수를 변수 one에 저장해 준다. 색종이 5개도 각각 5개씩 저장해 준다.dfs함수를 시작한다 매개변수로는 행, 붙힌 색종이 개수, 남은 1의 개수를 전달해 준다.당연하게도 기저조건은 맵에 1이 존재하지 않는 경우이다, 정답 ans를 갱신하고 리턴해 준다.만약 현재 붙힌 색종이 개수가 ans보다 크거나 같고, 25개 이상을 붙였다면 더 이상 탐색할 필요가 없다.x행부터 탐색을 시작하여 1을 만날 경우 1~5번 인덱스의 색종이를 하나씩 대입해 본다.만약 i번째 색종이를 붙힐 수 있다면 색종이를 붙히고 해당 색종이의 개수를 한개 줄..

firebase storage 스토리지

개요firebase 에서 제공하는 저장소이다.주로 이미지, 오디오, 동영상 을 저장하기 위해 사용한다. 생성왼쪽 사이드바에서 storage 클릭하여 시작하기 버튼을 클릭 생성이 완료되면 파일을 추가할 수 있는 기본 버킷을 확인할 수 있다.더미데이터 용으로 이미지를 넣어보면 정상적으로 업로드 되는 점을 확인할 수 있다. storage 활용firestore database에 storage에 존재하는 파일명을 필드 값으로 할당 및 매핑하여 원하는 데이터를 가져올 수 있다. 웹, 유니티 등 각 툴에 맞는 관련 메서드들을 import하여 활용할 수 있다.예를 들어 자바스크립트에서 storage를 사용하고 싶다면 관련 CDN을 import 해주어야 한다. import { getStorage } from "https..

Firebase firestore database reference 다른 문서 참조하기

개요필드를 추가할때 타입을 reference으로 설정하게 된다면 다른 문서의 참조를 가지게 된다.참조를 가지고 있다면, 서버에 요청해 원하는 문서를 가져올 수 있다. reference를 왜 사용할까?인사과에 근무하고 있는 홍길동씨를 예로 들어보자.사원을 나타내는 문서 member가 있다고 가정했을때 해당 필드값으로 사원명 name과 부서명 dep가 있을 경우부서명을 string을 통해 해당 문서명을 복사해서 붙여넣었다면, 만약 인사과가 인사팀으로 변경되었다고 생각해 보자그럼 기존 인사과에 근무하는 사원들의 dep을 모두 인사과로 변경해 주어야 한다.reference를 사용하면 부서 이름이 변경될 경우 해당 부서를 참조하는 사원 모두의 부서이름이 변경된다.즉, reference 는 관계형 데이터베이스의 F..

백준 17135번 캐슬 디펜스 C++ 브루트포스, DFS, BFS, 구현, 시뮬레이션

리뷰 쉽게 접근했다가 꽤나 애먹은 문제, 딱히 엣지케이스가 있는 것 같지는 않은데 써야할 알고리즘이 많고, 생각해 주어야 할 부분이 많아서 코드가 길어지기에 실수가 잘 나올 것 같다. https://www.acmicpc.net/problem/17135  문제 풀이input 함수를 통해 n, m, d 값을 받고 정답을 출력한 ans를 0으로, 이후 맵을 초기화 해 주었다.궁수 좌표 및 이동 범위 정보를 담을 구조체 Pos를 만들고 해당 벡터 col을 만들어 dfs를 실행해 주었다.dfs 함수의 매개변수로는 level과 궁수 3명의 정보를 담을 Pos 타입 벡터 col이다.궁수 세명을 담을 것인데, 중복을 허용하지 않는 순서가 있는 조합으로 궁수를 벡터 col에 담아준다.123, 124, 125 ... 35..

백준 1761번 정점들의 거리 C++ 최소 공통 조상, 유니온 파인드

리뷰 그래프의 정보가 주어지고 두 노드간의 거리를 구하는 문제, 루트 노드가 1이 고정이 아니여서 직접 구해주어야 한다.LCA는 개념만 잘 잡는다면 응용 문제에 적용하는 방법이 어렵지 않은 것 같다.https://www.acmicpc.net/problem/1761 문제 풀이main 함수에 init, ds, pre_process, query 네개의 함수를 순차적으로 실행시켜 문제를 풀었다.init 함수에서 n값을 받고 n - 1개의 간선 정보를 tree 벡터 배열에 저장한 뒤 Union 작업을 수행해 준다.1부터 n까지의 노드를 탐색 한 후 자기 자신을 value로 갖는 노드를 찾아 root로 저장한다.root 부터 dfs 함수를 통해 각 노드의 깊이와, 루트 노드로 부터의 거리, 자기 자신의 바로 윗 조..

백준 17070번 파이프 옮기기 1 C++ DFS

리뷰 0, 1 좌표에서 파이프를 옮겨 n - 1, n - 1 좌표까지 이동 가능한 모든 경로를 구하는 문제 문제 풀이전역 변수로 변의 크기 n, 정답용 변수 ans, 맵을 나타낼 lst 배열, 방문 처리를 나타낼 v 배열, 방향 배열을 초기화 한다.n값을 입력 받고 ans를 0으로 초기화 한 뒤에 n * n크기의 맵을 lst에 초기화 해준다.0, 0과 0, 1을 방문 처리해 주고 0, 1 좌표 및 방향 배열 인덱스는 0 (오른쪽)으로 dfs를 시작해 준다.dfs의 매개변수로는 현재 좌표 x, y값과 방향 위치인 dir을 받는다.기저 조건으로 x, y 좌표가 n - 1일때 ans를 증가시키고 리턴을 해준다.현재 방향 인덱스에 -1 ~ 1범위로 더해주고 만약 인덱스 범위를 벗어난다면 continue 처리를 ..

백준 13511번 트리와 쿼리 2 C++ 최소 공통 조상, LCA

리뷰 치열한 전투의 흔적이 보이십니까?LCA의 기본기가 있다면 쉽게 풀 수 있을 거라 생각했는데, 문제가 친절하지 않아 고생한 문제https://www.acmicpc.net/problem/13511 문제 풀이input 함수에서 n값을 받고, 각 노드간의 간선 n - 1개를 입력 받는다.solution함수에서 dfs 함수와 pre_process 함수를 돌려주어 각 노드의 부모, 깊이, 비용값을 구해주었다.dfs 함수에서는 각 함수의 깊이 및 루트 노드로부터의 비용, 자신의 바로 위 부모를 구해 각 배열에 저장해줬다.pre_process 함수에서는 각 노드의 2^i 번째 상위 부모를 찾아 부모 배열을 마저 초기화 해주었다.query 함수에서 m값을 받고, 입력된 m개의 쿼리를 처리해 주었다.쿼리의 인덱스가 ..

백준 11438번 LCA 2 C++ 최소 공통 조상

리뷰 LCA 문제의 상위 호환버전, 노드의 개수가 2배로 많아졌고, 쿼리의 개수도 증가하였다.시간을 좀 아껴보려고 LOG의 크기를 줄여주었더니 OutofBounds 에러가 출력되었다, LOG값을 높혀주니 AChttps://www.acmicpc.net/problem/11438 문제 풀이n값을 입력 받고, n - 1개의 간선을 tree 벡터 배열에 양방향 간선으로 저장해 준다.루트 노드는 항상 1이기에 1부터 dfs 함수를 통해 모든 노드에 자기 자신의 깊이와 바로 윗 조상을 초기화 해준다.pre_process 함수를 통해 각 노드에 변수 LOG의 값 즉 2^20개의 부모 노드를 탐색하여 저장해 준다. (메모제이션)m개의 쿼리를 받고, 각 쿼리마다 두 노드의 최소 공통 조상을 lca 함수를 통해 찾아준 뒤 ..

백준 3584번 가장 가까운 공통 조상 C++ 최소 공통 조상, 유니온 파인드

리뷰  문제 풀이테스트 케이스를 입력 받고, 해당 테스트 케이스 만큼 while문을 돌려준다.각 테스트 케이스 마다 n, root, tree, parent정보를 초기화 해준다.유니온 파인드용 노드 배열을 노드의 1 ~ n 노드까지 자기 자신을 값으로 갖게끔 인덱스를 설정해 준다.이후 n - 1개의 간선을 입력 받고, tree벡터 배열에 양방향 간선으로 추가, b를 a의 자식으로 유니온 해준다.1부터 n까지 노드를 탐색해 자기 자신을 value로 갖고있는 노드를 찾고 root로 할당해 준다.dfs함수를를 root 부터 돌려 각 자신의 바로 위 부모를 구해준다.preprocess 함수를 통해 그 위의 부모들까지 초기화를 해준다.비교할 노드 두개를 입력 받고 lca 함수의 매개변수로 전달해준 뒤 리턴값을 출력..

Node.js Firebase 연동, 로그아웃 구현하기

개요Node.js Firebase 연동, 데이터 파싱 collection, getDocsNode.js Firebase 연동, 데이터 파싱(2) getDoc, doc, dayjsNode.js Firebase 연동, 데이터 추가 Timestamp, addDocNode.js Firebase 연동, 데이터 수정 updateDocNode.js Firebase 연동, 데이터 삭제 deleteDocNode.js Firebase 연동, 로그인 구현하기Node.js Firebase 연동, 회원가입 구현하기Firebase의 Authentication를 사용하여 이메일 기반 로그아웃을 구현해 보자하기 링크에서 firestore database의 규칙을 적용해 주었다. 파이어베이스 Firebase 데이터베이스 규칙, fire..

728x90
반응형