Computer Science

Computer Science

클라우드 IaaS, PaaS, SaaS 비교

IaaS IaaS(Infrastructure-as-a-Service)는 인프라형 클라우드 서비스 클라우드가 단지 인프라를 제공 node.js, MongoDB 등을 개발자가 직접 설치해야 하는 대신 특정 서비스에 종속되지 않음 ex) AWS EC2 등 PaaS PaaS(Platform-as-a-Service)는 플랫폼형 클라우드 서비스 클라우드가 플랫폼을 제공 Node.js, MongoDB 등이 설치되어있으며 그저 클릭을 통해 해당 서비스를 이용할 수 있음 모니터링, CI/CD가 제공 ex) heroku SaaS SaaS(Softwar as a Service)는 서비스형 클라우드 서비스 완전한 서비스를 클라우드 서비스로부터 제공받아 사용 ex) Google Sheet 등 PaaS와 IaaS 비교 IaaS ..

Computer Science

ad-hoc이란? (adhoc)

프로그밍에서 말하는 ad-hoc은 쉽게 말해 재사용이 불가능한 코드라고 보시면 됩니다. 개발 기간이 촉박할 때 급하게 요구사항을 맞추는데 사용하게 됩니다. 흔히 '하드코딩'이라 불리는 방법으로 만든 솔루션이라고 보시면 됩니다. 예를 들어 num1 = 10 num2 = 15 result_add = num1 + num2 print(f"result : {result_add}") - num1, num2를 받아서 result_add에 그 값을 저장하는 코드 입니다. 따로 함수를 만들지않고 작성한 코드이다 보니 num1, num2를 변경하지 않는 이상 값은 변하지 않습니다. 해당 코드는 재상용될 수 없고, 다른 숫자를 더하려면 프로그램 코드 자체를 변경해야 합니다. 빠르게 코딩할 수 있다는 장점이 있지만 점점 ac..

Computer Science

순회 (Traversal) 란?

순회 기본개념(Traversal) 순회는 Traversal로 명명되며, 그래프 또는 트리처럼 연결된 구조에서 노드를 한 번씩 탐색하는 개념이다. 순회의 목적은 모든 노드 또는 특정 노드를 방문하는 방법을 찾는 것이다. BST(이진검색트리)와 다른 규칙이 적용되며 방향에 따라 탐색방법이 달라질 수 있다. 그래프와 트리의 순회구분 그래프의 순회는 DFS(깊이우선탐색), BFS(너비우선탐색) 방법이 있다. DFS, BFS는 탐색 알고리즘이다. 트리의 순회는 전위, 중위, 후위순회이다. 그래프는 루트, 부모, 자식노드 개념이 없지만 전위, 중위, 후위순회의 순회개념을 활용하여 DFS, BFS를 구현할 수 있다. 전위 순회(preorder traverse) : 루트를 먼저 방문 중위 순회(inorder trave..

Computer Science

그래프 데이터베이스 (Graph Database)

그래프 데이터베이스의 특징 및 역할 컴퓨팅에서 그래프 데이터베이스는 데이터를 표현하고 저장하기 위해 노드, 에지 및 속성이 있는 쿼리에 그래프 구조를 사용하는 데이터베이스입니다. 그래프의 중심 개념은 그래프(에지 또는 관계)입니다. 관계를 통해 저장소의 데이터를 직접 연결하고 많은 경우 하나의 작업으로 검색 할 수 있습니다. 그래프 데이터베이스를 사용하여 관계를 직관적으로 시각화할 수 있으므로 상호 연결된 데이터에 유용합니다. 정리해보면 그래프 데이터베이스는 데이터 간의 관계를 처리하도록 설계된 데이터베이스입니다. 그래프 데이터베이스를 활용할때의 특징 기본적으로 관계를 수용하는 데이터베이스 만이 연결을 효율적으로 저장, 처리 및 쿼리 할 수 있습니다. 다른 데이터베이스는 시간이 오래 걸리는 JOIN 작업..

Computer Science

CI/CD(Continuous Integration/ Delivery & Deployment)란?

CI/CD(Continuous Integration/ Delivery & Deployment)란? 개발자가 코드를 짰자면 그 다음 해야할 일은 바로 지속적으로 코드를 합치고 코드를 배포해야합니다. 이를 CI/CD(Continuous Integration/ Delivery & Deployment)라고 합니다. 그럼 왜 필요할까? 혼자 개발을 할 때는 ftp로 배포할 수도 있지만 혼자가 아닌 수많은 개발자가 코드를 합치고 배포를 계속해서 시스템 없이 수동으로 한다면 이런 일이 발생할 수 있다. - dev 서버에 누가 배포했나요? 제 환경에서는 갑자기 안되는데요? - 이 함수 테스트 안하고 배포했나요? 해당 부분에서 에러 뜨는 거 같아요. 여러 명의 개발자가 동시에 개발을 하게 될 것이고 이는 앞과 같은 문제..

Computer Science

Python과 컴파일러 언어 간의 주요 차이점

인터프리터 vs 컴파일러 Python: Python은 인터프리터 언어입니다. 소스 코드를 직접 실행하며, 코드를 작성한 후 바로 실행할 수 있습니다. 이것은 Python 코드를 작성하고 테스트하는 과정을 단순화하지만, 실행 시에 일부 성능 손실이 있을 수 있습니다. 컴파일러 언어: 컴파일러 언어는 소스 코드를 먼저 컴파일하여 중간 코드나 기계어로 변환한 후 실행합니다. 이러한 컴파일된 코드는 일반적으로 더 빠르게 실행되지만, 컴파일 단계가 필요하므로 개발 및 디버깅 과정에서 추가 시간이 소요됩니다. 동적 vs 정적 타이핑 Python: Python은 동적 타입 언어로, 변수의 데이터 유형이 실행 시간에 결정됩니다. 이는 더 유연한 코딩을 허용하지만, 실행 중에 타입 오류가 발생할 수 있습니다. 컴파일러 ..

Computer Science

k진수에서 소수 개수 구하기 (풀이)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from math import sqrt as sq def prime(x): if x 0: re= n % k # 변수로 만들어 주는게 시간 절약(사견) # 나머지 값 저장 trans = str(re) + trans n //= k # n = n // k 와 동일 nums = [int(n) for n in trans .split('0') if n != ''] # 아래 코드와 동일 / 한줄 for문이 시간 절약 #nums = [] # for num in number.split('0'): # if num: # nums..

Computer Science

재귀 함수란? (Recursion)

재귀(Recursion) 재귀란 쉽게 말해 자기 자신을 호출하는 함수 입니다. 문제를 더 작은 하위 문제로 나눈 것을 의미합니다. 재귀의 개념은 수학적 사고에 기반하고, 코드를 작성하기 전에 문제를 해결하는 재호출 로직을 발견해야 합니다. 재귀는 해결을 위한 특정 기능을 재호출 한다는 측면이고, 분할정복은 문제를 분할하고 해결하는 구체적인 방법론 입니다. 분할정복법을 활용하기 위해서는 재귀개념이 필요합니다. 예를 들어보겠습니다. sample_list = [1, 2, 3, 4, 5] def sum_list(x): sum = 0 for i in x: sum = sum + i return sum sum_list(sample_list) 위의 문제를 하위 문제로 분리하면 이렇게 됩니다. 1 + 2 + 3 + 4 ..

Computer Science

해시란? (Hash Table)

해시테이블이란? HashTable(해시테이블)이란? 해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조이다. 해시 테이블이 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문이다. 해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다. 여기서 실제 값이 저장되는 장소를 버킷 또는 슬롯이라고 한다. 예를 들어 우리가 (Key, Value)가 ("John Smith", "521-1234")인 데이터를 크기가 16인 해시 테이블에 저장한다고 하자. 그러면 먼저 index = hash_function("John Smith"..

Computer Science

파이썬 디버깅 사이트 (pythontutor)

안녕하세요 오늘은 파이썬으로 알고리즘을 공부할 때 정말 유용하게 활용할 수 있는 페이지를 들고 왔습니다! https://pythontutor.com/render.html#mode=display Python Tutor code visualizer: Visualize code in Python, JavaScript, C, C++, and Java Please wait ... your code is running (up to 10 seconds) Write code in Python 3.6 C (gcc 9.3, C17 + GNU) C++ (g++ 9.3, C++20 + GNU) Java 8 JavaScript ES6 ------ Python 2.7 [unsupported] Visualize Execution ..

Balang
'Computer Science' 카테고리의 글 목록