전체 글 147

파이썬 미로 탈출 경로 찾기 / 순열 생성하기

1. 미로 탈출 경로 찾기문제 설명:N x M 크기의 미로가 주어집니다. 미로는 0과 1로 구성되어 있으며, 0은 이동할 수 없는 벽을 나타내고, 1은 이동할 수 있는 경로를 나타냅니다.시작 위치는 (0, 0)이며, 미로의 출구는 (N-1, M-1)에 위치해 있습니다.최단 경로로 미로를 탈출하는 방법을 찾는 프로그램을 작성하세요. 이동은 상하좌우로만 가능합니다. 요구사항:BFS 알고리즘을 사용하여 미로의 모든 경로를 탐색합니다.시작 위치에서 출구까지의 최단 경로의 길이를 찾아야 합니다.최단 경로의 길이를 반환합니다. 예시 입력:11101101011010111111예시 출력:8시작 위치 (0, 0)에서 출구 (3, 4)까지의 최단 경로의 길이는 8입니다. 예시 입력:1111100001111011000111..

알고리즘 2024.06.20

알고리즘 2 (BFS, 백 트래킹, 이진탐색)

1. 그래프(이전 글)2. DFS(이전 글)3. BFS4. 백트래킹5. 이진탐색 3. BFS: 인접한 노드 중 방문하지 않은 모든 노드들을 저장해두고, 순서대로 넣은 노드를 꺼내서 탐색.큐가 BFS를 구현하는 것에 용이함1. 루트 노드를 큐에 넣는다.2. 현재 큐의 노드를 빼서 visited 에 추가한다.3. 현재 방문한 노드와 인접한 노드 중 방문하지 않은 노드를 큐에 추가한다.4. 2부터 반복한다.5. 큐가 비면 탐색을 종료한다. 3-1. BFS 구현from collections import dequedef bfs_queue(graph, start): visited = [start] q = deque([start]) while q: node = q.popleft() ..

알고리즘 2024.06.17

알고리즘 1 (그래프, DFS)

1. 그래프2. DFS3. BFS(다음 글)4. 백트레킹(다음 글)5. 이진탐색(다음 글)  1. 그래프: 비선형 구조 중 연결 관계에 집중이 되어있는 자료구조  1-1 그래프 용어 정리노드(Node): 연결 관계를 가진 각 데이터를 의미. 정점(Vertex)이라고도 함. 간선(Edge): 노드 간의 관계를 표시한 선.인접 노드(Adjacent Node): 간선으로 직접 연결된 노드(또는 정점) C - D ⎜ B - AA는 연결 관계를 가진 데이터, 노드A와 B는 간선으로 연결됨A와 C는 인접 노드  1-2 그래프의 종류유방향 그래프(Directed Graph): 간선이 방향을 가짐. 간선은 단방향 관계를 나타내며, 각 간선은 한 방향..

알고리즘 2024.06.14

DFS 문제(섬의 개수 구하기)

문제: '1'(육지)과 '0'(물)으로 구성된 지도를 나타내는 m x n 크기의 이진 격자가 주어질 때, 섬의 개수를 반환합니다.섬은 물로 둘러싸여 있으며 인접한 땅을 가로 또는 세로로 연결하여 형성됩니다.(대각선 x) Example 1:Input: grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]Output: 1Example 2:Input: grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"]]Output: 3 1. DFS 스택방식으로 ..

알고리즘 2024.06.14

자료구조 종류2 (트리, 힙)

알고리즘 기초 2목차1. 연결리스트(이전 글)2.스택(이전 글)3.큐(이전 글)4.해시테이블(이전 글)5. 트리6. 힙5-1. 트리 선형 구조: 자료를 구성하고 있는 데이터들이 순차적으로 나열시킨 형태의 자료구조. 큐(Queue), 스택(Stack)비선형 구조: 데이터가 계층적 혹은 망으로 구성됨. 트리(Tree) 선형구조와 비선형구조의 차이점은 형태뿐만 아니라 용도에서도 차이점이 있음. 선형구조는 자료를 저장하고 꺼내는 것에 초점이 맞춰져 있고, 비선형구조는 표현에 초점이 맞춰짐. Node: 트리에서 데이터를 저장하는 기본 요소 (A, B, C, D, ... , J)Root Node: 트리 맨 위에 있는 노드 (A)Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드..

알고리즘 2024.06.13

자료구조 종류1 (연결리스트, 스택, 큐, 해시테이블)

알고리즘 기초 1목차1. 연결리스트2.스택3.큐4.해시테이블5.힙(다음 글) 1. 연결리스트(LINKED-LIST): 노드(값과 노드로 이루어진 데이터)와 노드를 연결해서 저장하는 방식. 주소를 통해 다음 값의 주소를 가리킴.어레이: 파이썬의 리스트. 접근 쉬움, 삽입 어려움. (파이썬의 리스트)연결리스트: 직접 구현. 접근 어려움, 삽입 쉬움.연결리스트 구현#노드class ListNode: def __init__(self, val=0, next=None): #값 self.val = val #주소 self.next = next#연결리스트class LinkedList: #head는 제일 처음 넣은 노드를 가리킴 def __init__(sel..

알고리즘 2024.06.12

O(n)에서 O(n^2)인 약수의 개수 구하기 예

기사단원의 무기(파이썬) 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다.각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다.예를 들어, 15번으로 지정된 기사단원은 15의 약수가 1, 3, 5, 15로 4개 이므로, 공격력이 4인 무기를 구매합니다. 만약, 이웃나라와의 협약으로 정해진 공격력의 제한수치가 3이고 제한수치를 초과한 기사가 사용할 무기의 공격력이 2라면, 15번으로 지정된 기사단원은 무기점에서 공격력..

알고리즘 2024.06.12

AI 웹 개발 공부 9일 차 (사전 캠프)

[SQL 과제] Lv2. 날짜별 획득포인트 조회하기  데이터 설명user_point 테이블은 스파르타코딩클럽 가입 유저들의 포인트에 대한 정보를 기록한 테이블입니다.point_user_id: user_point 행을 구별하기 위한 key(varchar255)created_at: 아이디 생성 날짜(timestamp)updated_at: 정보 업데이트 날짜(timestamp)user_id: 익명화된 유저들의 아이디(varchar255)point: 보유하고 있는 포인트(int)문제: 다음과 같은 결과테이블을 만들어봅시다.created_at: 익명화된 유저들의 아이디(varchar255)total_point: 유저가 획득한 총 포인트(int), 반올림 필수SELECT DATE(created_at) AS ..

SQL 2024.06.11

AI 웹 개발 공부 8일 차 (사전 캠프)

[SQL 과제] Lv1. 데이터 속 김서방 찾기  데이터 설명user 테이블은 스파르타 코딩클럽에 가입한 유저들의 정보를 날짜별로 기록한 테이블입니다.user_id: 익명화된 유저들의 아이디(varchar255)created_at: 아이디 생성 날짜(timestamp)updated_at: 정보 업데이트 날짜(timestamp)name: 익명화된 유저들의 이름(varchar255)email: 이메일(varchar255) 문제: 이름은 name_cnt인 결과테이블을 만들어봅시다.name_cnt: “김”씨 성을 가지고 있는 교육생의 수select count(distinct(user_id)) as name_cntfrom userswhere name like '김%'혹은SELECT count(distinct(us..

SQL 2024.06.10

AI 웹 개발 공부 7일 차 (사전 캠프)

DATETIME  참고: https://zephyrus1111.tistory.com/440 파이썬(python) 날짜 다루기 (feat. datetime)파이썬(Python)에서는 datetime 모듈을 이용하여 특정 날짜의 연도, 월, 일을 계산한다거나 또는 날짜를 특정 형태로 문자열 변환하는 것이 가능하다. 이번 포스팅에서는 파이썬(Python) 내장 모듈인 dazephyrus1111.tistory.com 예시) 2016년 a월 b일의 요일을 출력하기import datetimedef solution(a, b): return datetime.date(2016,a,b).strftime('%a').upper()print(solution(5,20))  SQL 연습문제 5팀 프로젝트 테이블(team_pr..

SQL 2024.06.07