전체 글 67

[파이썬] sys.setrecursionlimit() (재귀 최대 깊이 설정)

파이썬으로 재귀를 사용해 문제를 풀 때 특히, DFS, BFS 문제를 풀 때 예시에서 답은 잘 나오는데, 정답 제출을 하면 런타임 에러를 접하게 되는 경우가 있습니다. 대부분이 파이썬의 재귀 최대 깊이의 기본 설정이 1,000회 이기 때문에 런타임 에러가 발생하는 경우입니다. 이런 문제를 해결하기 위해서는 아래와 같이 코드를 작성해주면 됩니다. import sys sys.setrecursionlimit(10 ** 6) 위와 같이 코드의 상단에 sys.setrecursionlimit(10**6)을 작성해주면 재귀의 최대 깊이가 10**6으로 바뀌게 됩니다. ( 필요에 따라 안의 숫자를 설정해주면 됩니다. ) 유의해야할 점이 있습니다. PyPy에서는 sys.setrecursionlimit()으로 임의로 재귀..

파이썬 Python 2021.09.22

[CUDA] 쿠다 프로그램 작성해보기 (.cu 확장자)

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! 글에 포함된 코드의 개발 환경은 아래와 같습니다. - CUDA : CUDA v11.4 - IDE : Visual Studio 2019 - OS : Windows 10 CUDA 프로젝트 만들기 최근에는 Visual Studio 내에서 CUDA 프로젝트를 손쉽게 만들 수 있습니다. 새 프로젝트 만들기를 선택하고 스크롤을 내려보면 아래 그림과 같이 CUDA 프로젝트를 만들 수 있습니다. (CUDA를 설치해 놓지 않았으면 설치부터 해야합니다.) .CU 확장자 위와 같이 쿠다 프로젝트를 만들면 소스 코드의 확장자 명이 .cu 인 것을 확인할 수 있습니다. 모든 쿠다 프로그램은 확장자 명으로 .cu 를 사용합..

[MySQL] 테이블 열(컬럼) 추가, 삭제 (예시 포함)

MySQL에서 테이블 열을 추가하거나 삭제하기 위한 구문을 알아보겠습니다. 컬럼 추가 먼저 열을 추가하는 구문입니다. alter table 테이블명 add column 컬럼명 타입 옵션 컬럼 삭제 다음은 열을 삭제하는 구문입니다. alter table 테이블명 drop column 컬럼명 예시 위의 구문을 사용해 열을 추가, 삭제해보겠습니다. 위는 수정하기 전 제가 사용할 테이블입니다. 위의 기존 user 테이블에 삭제, 추가 구문을 사용해봅시다. 위의 구문을 입력해 날짜에 관련된 열을 먼저 삭제하고, 취미와 관련된 열을 추가했습니다. 그럼 어떻게 됐는지 보겠습니다. 결과를 확인해보면 mDate 열은 사라지고, hobby 열은 추가돼 NULL 값으로 채워졌습니다. 이전 포스팅(https://kingnam..

DBMS(DataBase Management System)란? DBMS의 필수 기능, 장단점

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! DBMS란 DBMS(DataBase Management System)은 기존 파일 시스템의 데이터 종속성(Data Dependency)과 데이터 중복성(Data Redundancy) 문제를 해결하기 위해 제안됐다. DBMS는 다양한 사용자가 필요로 하는 데이터베이스를 정의, 생성, 조작, 공유할 수 있도록 기능을 제공하는 소프트웨어 시스템을 말한다. 이런 환경 하에 응용 프로그램들이 데이터베이스를 이용하기 위해서는 DBMS를 통해야 하며, 데이터베이스의 구성, 접근방법, 그리고 관리유지에 대한 모든 책임을 DBMS가 지고 있다. DBMS의 기본적인 아이디어는 아래 그림처럼 묘사된다. DBMS의 필수..

API(Application Programming Interface)란?

갑자기 API가 정확히 무엇인지 의문이 들어 정리했습니다. 위키백과를 보면, API(Application Programming Interface)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 라고 쓰여있습니다. 인터페이스 먼저, 흔히들 말하는 인터페이스가 무엇인지 한번 이해해보겠습니다. 인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 교환하는 공유 경계를 의미합니다. (쉽게 생각하면 객체와 객체 사이의 매개체 정도로 받아들여도 될 것 같습니다.) 이러한 교환은 소프트웨어, 하드웨어, 주변기기, 사람 간에 이루어질 수 있고, 복합적으로 이루어질 수도 있습니다. 터치스크린과 같은 일부..

기타 2021.09.09

데이터베이스의 개념적 구성 (개체, 속성, 관계)

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! 데이터베이스의 개념적 구성 데이터베이스는 개념적으로 개체(Entity)와 관계(Relationship)로 구성되어 있다. 개체 (Entity) 현실세계에 대해 사람이 생각하는 개념이나 정보의 단위이며 개체는 컴퓨터가 취급하는 파일(file)의 레코드에 대응된다. 하나의 개체는 하나 이상의 속성(Attribute)로 구성되며 각 속성은 그 개체의 성질이나 상태를 기술해주는 역할을 한다. 속성은 데이터의 가장 작은 논리적 단위가 되며, 단독으로 존재하지 못한다. '학생'이라는 개체에 대한 예시와 함께 나머지 개념들을 살펴봅시다. 학번 이름 학과 2017000001 홍길동 수학과 2018000001 박길..

데이터베이스 정의, 특징

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! 데이터베이스의 정의와 특징 데이터베이스 정의 어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합 및 저장된 운영 데이터의 집합. 1. 통합 데이터(Integrated data) 하나의 주제에 따라 중복을 최소화한 데이터. 원칙적으로 중복(redundancy)을 배제하나 통제된 중복(controlled redundancy)이 되어야 한다. ( 불가피한 중복은 허용함. ) 2. 저장 데이터(Stored data) 언제든 이용할 수 있도록 저장 매체에 저장된 데이터를 말한다. (저장 매체는 하드 디스크나 메모리와 같이 컴퓨터가 접근할 수 있는 매체를 말함.) 3. 운영 데이터(Operationa..

Outlier Detection, Novelty Detection의 차이

정상적인 샘플과 비정상적인 샘플을 나누는 비슷한 작업이지만 굳이 나누자면, 조금은 다르다. (참고자료의 사이킷런 공식 문서를 확인하면 다양한 예시 확인 가능) Novelty Detection 훈련 데이터셋에 있는 모든 샘플과 달라 보이는 새로운 샘플을 탐지하는 것이 목적이다. (훈련 데이터에 포함된 샘플은 특이치로 생각하지 않는다.) 즉, Training data가 특이치 데이터를 포함되지 않은 채 학습하고 (사이킷런의 문서에서는 오염되지 않았다고 표현), 예측시 새로운 관측치인지 확인한다. 따라서 알고리즘으로 감지하고 싶은 샘플들을 제거한 훈련 데이터셋이 필요하다. Outlier Detection 훈련 데이터셋에 정상 샘플과 이상치 샘플을 모두 포함하고 있다. ( 대부분 정상 샘플 ) 즉, Traini..

CUDA 소개 (GPGPU, 지원 언어)

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! CUDA(Comute Unified Device Architecture)는 이름에서도 확인 가능하듯이 기기나 프로그래밍 언어가 아닌 하나의 시스템(또는 모델)이다. 엔비디아(NVIDIA)가 개발, 관리하고 있으며 이 아키텍처를 사용하기 위해서는 엔비디아 GPU와 특별한 처리 드라이버가 필요하다. GPGPU 먼저 쿠다에 대한 얘기를 하기 전, GPGPU라는 기술에 대해 알아야 한다. 예전의 GPU는 일반적으로 컴퓨터 그래픽스 분야에 주로 활용했다. GPGPU(General Purpose computing on Graphics Processing Units)는 일반적으로 컴퓨터 그래픽스를 위한 계산에 ..

병렬 컴퓨팅 소개 (CPU, GPU, 발전 과정)

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! CPU와 GPU 중앙 처리 장치, CPU(Central Processing Unit)는 컴퓨터가 계산하는데 있어 가장 핵심적인 부품으로 보통 1개의 독립된 칩 형태. 그래픽스 처리 장치, GPU(Graphics Processing Unit)는 보통 카드 형태. 이 전에는 CPU가 주로 계산을 담당, GPU가 화면을 출력하는 용도로 쓰였던 것에 반해, 최근에는 GPU 즉 그래픽 카드를 계산에 사용하는 추세다. 간단하게 차이점을 보자면 CPU와 달리 GPU는 코어가 많음. CPU는 복잡한 계산을 빠르게 할 수 있지만, 모두 직렬로 처리. GPU는 간단한 계산을 빠르게 할 수 있고, 많은 연산을 병렬로 ..