본문 바로가기

전체 글121

[백준 6593번] 상범 빌딩 문제 풀이 입력 파트가 까다로워 문제는 복잡해보였으나 기본적인 BFS 최단 경로 문제였다. 3차원 배열을 입력받을때, 경로를 구할 같은 크기의 3차원 배열을 만들어 주었다. - 입력 파트 : 0 0 0을 입력하기 전까지 계속 최단 경로를 구해주어야 한다. a 배열은 3차원 배열의 값을 입력받고, d 배열은 해당 위치까지의 최단 거리를 저장, q는 bfs의 거리를 구하는데 사용한다. while True: l, r, c = map(int, input().split()) if l == 0 and r == 0 and c == 0: break a = [[[]*c for _ in range(r)] for _ in range(l)] d = [[[0]*c for _ in range(r)] for _ in range(l)] q =.. 2023. 8. 6.
[개념] 다익스트라 알고리즘 간단한 다익스트라 알고리즘은 O(V^2)의 시간 복잡도를 가진다. ( V는 노드의 개수 ) ✔ 방법 1 import sys input = sys.stdin.readline INF = int(1e9) # 노드의 개수, 간선의 개수 입력 받기 n, m = map(int, input().split()) # 시작 노드 번호를 입력 받기 start = int(input()) # 각 노드에 연결 되어 있는 노드에 대한 정보를 담는 리스트 만들기 graph = [[] for i in range(n+1)] # 방문한 적이 있는지 체크하는 목적의 리스트 만들기 visited = [False] * (n+1) # 최단 거리 테이블을 모두 무한으로 초기화 distance = [INF] * (n+1) # 모든 간선 정보를 입력.. 2023. 8. 3.
[백준 2579번] 계단 오르기 문제 풀이 1. 계단이 1, 2개 일때는 모두 더한 값이 최대 값이다. 2. 계단이 3개 이상일 때는 현재 계단을 k (k>=3)번 이라 할때, (price[k] + price[k-2])와 price[k] + price[k-1] + price[k-3]) 의 값을 비교하여 최댓값을 저장해주어야 한다. n = int(input()) s = [int(input()) for _ in range(n)] # 각 계단의 점수 리스트 max_score = [0] * (n) if len(s) 2023. 8. 2.
[10강] 페이스북 로그인 💟 준비 1. 페이스북 콘솔 API 를 검색해서 로그인 한다. 2. 앱 만들기를 누르고, 용도를 선택한다. 3. 설정에 있는 앱 ID 와 앱 시크릿 코드를 따로 컴퓨터에 저장해둔다. 준비 완료!! 💗 개발 1. application.yml 파일에 아까 저장해둔 client-id 와 client-secret을 설정한다. 2. loginForm.html 파일에 facebook 로그인 경로도 추가한다. (이때, oauth를 사용하는 경우 "/oauth2/authorization/facebook"으로 주소가 고정되어 있다.) http://localhost:8080/loginForm에 접속하여 facebook 로그인을 클릭하면 로그인이 잘 연결되는 것을 확인할 수 있다. 2023. 8. 2.
[백준 15486번] 동전 1 문제풀이 이전에 풀던 문제는 다이나믹 프로그래밍을 이용해 최소 개수나 최대 개수를 구하는 것이었는데, 이 문제는 경우의 수를 구하라는 면에서 달랐다. 다이나믹 프로그래밍을 이용해 어떻게 값을 저장해야 좋을지 고민하였다. 가치 k가 되는 경우의 수 문제를 가치 i (1 2023. 8. 1.