본문 바로가기

반응형

진리는어디에

(289)
[Python] 변수 #3 변수의 다양한 정보 확인 이번 포스트는 [Python] 파이썬 기초부터 시작하기 - 변수에서 연장 되는 잠시 쉬어가는 페이지 정도로 생각하면 된다. 알면 좋지만 모른다고해서 당장 문제 될것은 없으니 이런 것들이 있구나하는 마음으로 가볍에 읽고 나중에 필요 할 때 다시 와서 찾아 보면 된다. 목차 파이썬 변수의 소개 변수의 타입 >> 변수의 다양한 정보 확인 ctype 모듈을 활용한 변수의 정보 확인 == 와 is 연산자 mutable 변수와 immutable 변수 변수의 삭제 파이썬 정수는 Overflow가 없다? 들어가기 전에 이전 [Python] 파이썬 기초부터 시작하기 - 변수에서 파이썬 변수는 값 자체를 가지고 있는 것이 아니라, 메모리 어딘가에 생성 되어 있는 값을 가진 객체를 참조하는 참조자라고 이야기 했다. 여기서 ..
[Python] 변수 #1 소개 이번 포스트에서는 파이썬 언어의 변수에 대해 살펴 보도록 한다. 간단하게 변수의 선언과 사용에서 시작하여 변수의 메모리 구조와 형태에 대해 좀더 깊게 알아 보도록 할 것이다. 목차 >> 파이썬 변수의 소개 변수의 타입 변수의 다양한 정보 확인 ctype 모듈을 활용한 변수의 정보 확인 == 와 is 연산자 mutable 변수와 immutable 변수 변수의 삭제 파이썬 정수는 Overflow가 없다? 파이썬 변수의 선언과 사용 프로그래밍 언어에서 "변수"란 정보를 저장할 수 있는 공간(메모리)에 이름을 붙인 것이다. 메모리에 우리가 프로그래밍에서 사용하는 값을 저장하고 변수의 선언 시 붙여준 이름을 통해 그 값에 접근하여 읽고 쓸 수 있도록 해준다. C/C++, C#, Java와 같은 언어와는 다르게 파..
[Python] 파이썬 기초부터 시작하기 - Overview 이번 포스트는 파이썬 프로그래밍 언어를 배우는데 있어 기본중의 기본을 다룬다. 완벽하게 이해하려는 자세보다는 파이썬에는 이런 것들이 있구나 하는 정도의 가벼운 마음으로 읽고 넘어가면 된다. 두번 볼것도 없다. 한번 봤는데 이해가 안된다고해도 그냥 넘어가도록 한다. 자세한 사항은 이어지는 포스트들을 통해 자세히 알려드릴 것이며 중요하게 이해해야 하는 부분들은 중요하다고 따로 언급을 할 것이다. 본 포스트의 제일 마지막 [부록1. 같이 보면 좋은 글]에서 각 항목들을 자세히 다룬 포스트들의 링크를 준비 했으니 잘 활용하도록 하자. 파이썬 설치 본 튜토리얼을 수행하기 전 가장 먼저 해야 할 일은 파이썬을 설치하는 것이다. 파이썬은 파이썬 공식 홈페이지[여기]의 Download 페이지에서 각자의 OS에 맞는 파..
[C++] std::priority_queue 다익스트라 알고리즘을 구현하다 우선 순위 큐가 필요해 만들다 보니 C++에서 이미 표준 라이브러리로 priority queue를 제공하고 있음을 이제야 알게 되어 포스트를 작성한다. 우선 순위 큐는 일반 큐의 기능에 추가하여 엘리먼트가 삽입될때 마다 값(우선순위가)이 가장 큰(또는 가장 작은) 엘리먼트를 큐의 가장 앞에 위치한다. 이를 이용하여 우선 순위가 높은 작업을 먼저 처리 한다던지의 적용이 가능하다. 다익스트라 알고리즘에서는 오름차순으로 정렬하도록하여 가장 거리가 가까운 노드들을 먼저 방문하는데 사용 할 수 있다. std::priority_queue #include template< class T, class Container = std::vector, class Compare = std::les..
다익스트라(Dijkstra) 알고리즘 안 가본 노드 중에 가장 빨리 갈 수 있는 노드에 가서 거리 기록하는 일을 반복 #include #include #include #include constexpr int VERTEX_COUNT = 5; constexpr int distances[5][5] = { { 0,-1, 6, 6,-1}, { 3, 0,-1,-1,-1}, {-1,-1, 0, 2,-1}, {-1, 1, 1, 0,-1}, {-1, 4,-1, 2, 0}, }; /* constexpr int VERTEX_COUNT = 6; constexpr int distances[VERTEX_COUNT][VERTEX_COUNT] = { { 0, 2, 5, 1,-1,-1}, { 2, 0, 3, 2,-1,-1}, { 5, 3, 0, 3, 1, 5}, { 1,..
[VBA] csv 임포트 지난 포스트에서는 엑셀의 워크시트들을 각각의 csv 파일로 내보내는 방법에 대해 살펴 보았습니다. [여기] 이번 포스트에서는 csv파일을 엑셀의 워크시트로 읽어오는(import) VBA 스크립트를 살펴 보도록 하겠습니다. VBA 스크립트 - import csv Alt + F11로 VBAProject 창을 띄웁니다. '모듈 > 삽입 > 모듈' 을 선택해 프로젝트에 모듈을 추가 합니다 모듈의 이름을 'Import'로 변경합니다. 원하신다면 다른 이름으로 해도 상관 없습니다. ※ 이름을 변경하기 위해 F2를 눌러도 아무런 소용이 없습니다. 추가 하신 모듈을 선택 하고 속성창에서 직접 변경 해줘야 합니다. 아래 코드를 복사해서 붙여 넣습니다. Sub OpenDialog() Dim fd As FileDialog ..
[C++] 윈도우 콘솔에서 UTF-8 출력하기 들어가며 C++을 이용해서 UTF-8로 인코딩된 파일의 내용을 읽어와 콘솔창에 출력 할 때, 특히 윈도우의 경우 '?쒓??뚯뒪?' 처럼 텍스트가 깨져서 콘솔에 출력 된다. 기본적으로 유닉스 베이스 OS 콘솔은 코드페이지가 UTF-8을 지원하지만, 윈도우 콘솔은 기본 아스키 코드 페이지이기 때문에 SetConsoleOutputCP 함수를 이용해 프로그램과 연결된 콘솔의 코드페이지를 변경해주어야 한다. ※ SetConsoleOutputCP함수의 보다 자세한 사항은 [여기]를 참고하자. Example 아래는 '한글테스트'라고 적혀 있는 utf-8로 인코딩 된 파일을 읽어와 출력하는 예제다. NOTE : 티스토리 코드 블록 버그인지 아래 코드를 그대로 복붙해서 빌드하면 컴파일 에러가 발생하므로 첨부 파일을 다운..
데드락 회피 - 은행원 알고리즘 이전 포스트 : 데드락 회피에서는 데드락 회피의 개념, 안전 상태와 그렇지 않은 상태의 개념을 알아보았다. 그리고 데드락 회피를 구현하기 위한 자원 할당 그래프 알고리즘(Resource-Allocation Graph Algorithm)과 은행원 알고리즘(Banker's Algorithm)의 이론적인 측면들 또한 살펴 보았다. 오늘 포스트에서는 일정 금액이 있어야 사업을 마치고 상환을 할 수 있는 고객들에게 어떤 순서로 한정된 은행의 돈을 빌려 주고 돌려 받아야 모든 고객들의 요구를 만족 시킬 수 있는지 고민하는 은행원 알고리즘의 실제 예제를 만들어 봄으로써 은행원 알고리즘에 대한 이해도를 높이도록 한다. 잠깐! 시작하기 전에 본격적으로 시작하기 전에 은행원 알고리즘에 대해 잠깐 되짚어 보자. 은행원 알고..
[C++] 데드락 방지 락(deadlock free lock) - 순환 대기(Circular wait) 제거 들어가며 이전 글 데드락(Deadlock)에서 데드락이 발생하기 위해서는 상호 배제(Mutual Exclusion), 점유 대기(Hold and Wait), 비선점(Non-Preemption), 순환 대기(Circular Wait). 이 네가지 조건이 모두 충족되어야 한다고 이야기 했다. 예를 들어 두 유저간의 거래를 처리하는 서버가 있다고 가정하자. A가 B와의 거래를 요청 한다. 동시에 B가 A와의 거래를 요청한다. 서버는 스레드 1번에서 A->B의 거래를 위해 요청자인 A유저 객체의 lock을 설정한다. 동시에 스레드 2번에서 B->A의 거래를 위해 요청자인 B유저 객체의 lock을 설정한다. 스레드 1번은 A->B의 거래를 완료하기 위해 B유저 객체의 lock을 마저 설정 하려고 하지만 B유저 객..
데드락(Deadlock) 개념 정리 오늘 다뤄볼 내용은 이름만 들어도 프로그래머의 가슴을 답답하게 만드는 '데드락(Deadlock)'이다. 이 포스트를 통해서 우리는 데드락의 기본 개념, 데드락 발생 조건, 데드락 탐지, 데드락 방지, 데드락 회피, 데드락에서 벗어나는 법을 알아 볼 것이다. 데드락(Deadlock)이란? 멀티 프로그래밍 환경 또는 멀티 스레드 환경에서는 여러 프로세스 또는 스레드가 한정된 자원을 동시에 사용하기 위해 항상 경쟁 상태에 놓여 있다. 이 때, 어떠한 이유로든 프로세스가 필요한 자원을 획득하지 못하고 영원히 자원을 기다리는 상태로 남아 있는 것을 데드락이라고 한다. 어떻게 보면 자원을 획득하지 못하고 있다는 점에서 기아상태(starvation state)와 비슷하지만 이것은 영원히 헤어 나올 수 없는 상태라는 ..

반응형