알고리즘 문제풀이 2468. 안전영역 그래프 탐색으로 모든 좌표 순회 방문여부(visited)와 높이로 조건 설정 시간초과 발생.. from collections import deque import sys input = sys.stdin.readline dx = [0, 0, -1, 1] dy = [1, -1, 0, 0] deq = deque() def search(graph, height): visited = [[0]*n for i in range(n)] count = 0 for y in range(n): for x in range(n): if graph[x][y] > height and visited[x][y] == 0: deq.append((x, y)) count += 1 visited[x][y] =..
728x90
반응형
크래프톤
해시 테이블(Hash Table) Key, Value로 데이터를 저장하는 자료구조 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 떄문에 데이터 검색할 수 있음 시간복잡도 O(1) -> Search(검색), Insert(삽입), Delete(삭제) 해시값으로 변환하는 과정을 '해시 함수(Hash Function)'이라고 함 저장할 배열(버킷)이 중복되는 현상 -> 해시 충돌(Collsion) 해시법 데이터 저장 위치 = 인덱스 데이터 추가 또는 삭제가 빈번한 경우 효율적으로 수행 가능 해시(hash)란 특정 연산의 결과 값(데이터 접근시 사용) 원소값을 해시값으로 변환하는 과정 -> 해시 함수(Hash Function) 해시 충돌 처리방법 체인법(Chaining) : 해시값이 같은 원소를 연결 리스트..
퀵 정렬(Quick Sort) 가장 빠른 정렬 알고리즘으로 알려져있음 피벗(pivot)을 기준으로 좌측에는 피벗보다 작은 값, 우측에는 큰 값을 정렬 def qsort(arr, start, end): # 배열과 좌우 끝 인덱스 pl = start pr = end # 피봇값 지정 pivot = arr[(pl+pr)//2] # 우측 인덱스가 좌측 인덱스가 크거나 같을동안 진행 while pl pivot: pr -= 1 # 좌우 인덱스가 교차하지 않을때 swap if pl pl: qsort(arr, pl, end) array = [5, 2, 6, 7, 4, 3, 8, 1, 9, 0] qsort(array, 0, 9) print(array)# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 피벗(pivot)..
컴퓨터 시스템(CS:APP) 인트로 아래와 같이 hello.c 프로그램의 수명주기를 따라가면서 주요 개념과 용어, 관련된 구성요소를 소개 #include int main() { printf("hello, world\n"); return 0; } 1.1 정보는 비트와 컨텍스트로 이루어진다. hello 프로그램은 소스 프로그램(소스파일)으로 생성되어 hello.c라는 텍스트 파일에 저장됨 소스 프로그램 : 0과 1로 표시되는 비트(bit)들의 연속 / 바이트라는 8비트 단위로 구성 각 바이트는 프로그램의 텍스트 문자를 나타냄 대부분 컴퓨터 시스템은 텍스트 문자를 아스키(ASCII) 표준을 사용해 표시 아스키 표준은 각 문자를 바이트 길이의 정수 값으로 나타냄 hello.c처럼 오로지 아스키 문자들로만 이루어..
자료구조(Data Structure) 1. 문자열 둘 이상의 결합된 문자 불변성 : 기존 객체의 값을 바꾸는 것이 아닌 수정된 값을 가진 객체를 생성 문자열 끝에는 널 문자(종단문자, '\n') 반드시 들어감 없다면 출력시 쓰레기값이 같이 출력됨 2. 배열 연속된 메모리 공간에 순차적으로 저장된 데이터 모음 작업 average case worst case 접근(read) O(1) O(1) 삽입 및 추가(insert) O(n) O(n) 삭제(delete) O(n) O(n) 조회(search) O(n) O(n) 동일한 데이터 유형을 가짐 각 요소에 접근하는 시간은 O(1) => 인덱스로 바로 접근 가능 연속된 메모리에 단일 블록화하여 데이터 저장(낭비되는 공간이 적음) 삽입 및 삭제시 모든 요소를 움직여줘야..
배열(Array) 변수 : 한 개의 데이터를 저장하는 공간 배열 : 여러 개의 데이터를 저장하는 공간 방번호(index) : 0번방부터 n-1번방까지 존재함(배열 선언시 설정한 크기(n)) { // 배열 선언 int arr[5]; /* int : 배열에 담긴 데이터의 자료형 arr : 배열 이름 [5] : 데이터의 크기(5개의 데이터를 담을 수 있음) */ // 데이터 주입(초기화) arr[0] = 1; arr[1] = 2; arr[2] = 3; // 배열 초기화 int arr[5] = {1,2,3} /* 데이터 주입과 동일한 내용 배열의 크기는 5개인데 3개만 초기화를 해줬기 떄문에 arr[3], arr[4]에는 쓰레기 값이 담겨있음 !! 초기화를 해주지 않으면 쓰레기 값이 담김 !! */ } 배열의 ..
더보기 일기 오늘은 0주차 최종 발표가 있는 날이다. 비교적 아침 일찍 일어나서 부랴부랴 몸을 이끌고 강의실에 도착했다. 강의실 도착해서 어제 구현한 서비스를 바탕으로 발표자와 함께 최종발표 자료를 준비를 했다. 그러던 중 팀원의 의견으로 유저 프로필 변경하는 기능을 넣게 됐다. 발표시간이 그리 여유롭게 남지 않아서 걱정이 되긴 했지만 팀원분들이 역량이 뛰어났기 때문에 세 명이서 역할 분담해서 무사히 구현을 할 수 있었다. AWS EC2에 배포를 하고 같은 반분들에게 받은 데이터를 서버에서 건드리다가 실수로 프로필 이미지 데이터가 모두 삭제되는 사고가 생겼다. 방법 찾던 중 해결이 안되서, 아까 구현한 프로필 이미지 변경 기능을 이용해 복구할 수 있었다. 구현해놓기 잘했다.(낙타님 감사합니다) 약 3박 ..
728x90
반응형