목록분류 전체보기 (768)
우노
import numpy as np temp = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 평균 np.mean(temp) # 5.5 # 표준편차 np.std(temp) # 2.8722813232690143 # 분산 np.var(temp) # 8.25
쓰레드 세이프(Thread Safe)란? 멀티 쓰레드 프로그래밍에서, 어떤 공유 자원에 여러 쓰레드가 동시에 접근해도, 프로그램 실행에 문제가 없는 상태를 의미합니다. Thread Safe 를 지키기 위한 방법은 네 가지로 이루어져있습니다. Mutual exclusion (상호 배제) Atomic operation (원자 연산) Thread-local storage (쓰레드 지역 저장소) Re-entrancy (재진입성) Mutual exclusion (상호 배제) 공유자원에 하나의 Thread 만 접근할 수 있도록, 세마포어/뮤텍스로 락을 통제하는 방법입니다. 일반적으로 많이 사용되는 방식입니다. 적용 예제 Python 은 Thread Safe 하게 메모리 관리 하지 않으므로, GlL(Global In..
프로그램(Program)이란? 개념 파일이 저장 장치에만 저장되어 있고, 메모리에는 올라가 있지 않은 정적인 상태를 의미합니다. 즉, 아직 실행되지 않은 파일(코드 덩어리)을 의미합니다. 특징 모든 프로그램은, 운영체제가 해당 프로그램을 위한 메모리 공간을 할당한 뒤, 자원을 할당해줘야 실행할 수 있습니다. 프로세스(Process)란? 개념 운영체제로부터 자원을 할당 받은 작업의 단위를 의미합니다. 즉, 프로그램이 실행된 상태를 의미합니다. 특징 프로그램을 실행하는 순간, 해당 파일은 운영체제가 할당해준 메모리에 올라가게 되며, 운영체제로부터 시스템 자원을 할당받게 됩니다. 이때, 운영체제는 각 프로세스의 독립된 메모리 영역을 Code, Data, Stack, Heap의 형식으로 할당해줍니다. Code ..
문제 N가지 종류의 화폐가 있다. 이 화폐들의 개수를 최소한으로 이용해서 그 가치의 합이 M원이 되도록 하려고 한다. 이때 각 화폐는 몇 개라도 사용할 수 있으며, 사용한 화폐의 구성은 같지만 순서만 다른 것은 같은 경우로 구분한다. 예를 들어 2원, 3원 단위의 화폐가 있을 때는 15원을 만들기 위해 3원을 5개 사용하는 것이 가장 최소한의 화폐 개수이다. 입력 조건 첫째 줄에 N,M이 주어진다(1
문제 가로의 길이가 N, 세로의 길이가 2인 직사각형 형태의 얇은 바닥이 있다. 태일이는 이 얇은 바닥을 1 X 2의 덮개, 2 X 1의 덮개, 2 X 2의 덮개를 이용해 채우고자 한다. 이 때 바닥을 채우는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어, 2X3 크기의 바닥을 채우는 경우의 수는 5가지이다. 입력 조건 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000) 출력 조건 첫째 줄에 2 X N 크기의 바닥을 채우는 방법의 수를 796,796으로 나눈 나머지를 출력한다. 입력 예시 3 출력 예시 5 풀이 왼쪽부터 i-1 까지의 길이가 이미 덮개로 채워져 있으면, i 번째를 채우는 방법은 2 x 1 의 덮개를 채우는 하나의 경우밖에 없습니다. 왼쪽부터 i-2 까지의 길이가 이미 덮개..
Pull Request 충돌 발생 이유 대체적으로 아래와 같은 상황으로 인해 Pull Request 충돌이 발생합니다. master 브랜치에서 feature_x 와 feature_y 브랜치를 동시에 생성 feature_x 는 README.md 를 수정하여 master 에 merge 가 완료됨 feature_y 가 README.md 를 수정하여 master 에 pull request 하는 순간 충돌 발생 해결 방법 생각보다 간단합니다. Pull request Target 브랜치의 변경 사항을, Pull request Source 브랜치로 가져오면 됩니다. 예를 들어, feature_y 브랜치에서 master 브랜치로 pull request 하는 과정에 충돌이 생겼다면 feature_y 브랜치에서 maste..
들어가기 앞서, 해당 포스트에선, 터미널에서 GitHub 원격 브랜치에 접근하기 위한 방법을 다뤄보겠습니다. 아래 순서대로 진행됩니다. 브랜치 확인 원격 브랜치를 로컬로 가져온 뒤 접근 해당 브랜치 내용 수정 후, 해당 브랜치로 Push 해당 브랜치에서 메인 브랜치로 Merge 원격 브랜치 갱신 git remote update 원격 브랜치 확인 git branch -r : 원격 브랜치 리스트 확인 # git branch -a : 로컬 브랜치 리스트 확인 원격 브랜치를 로컬로 가져온 뒤 접근 git checkout -t origin/"접근 Bracnh 이름" 원격 저장소의 branch와 동일한 이름의 branch를 로컬 저장소에 생성하면서, 해당 branch로 접근합니다. 로컬 브랜치 내용 수정 후, 원격..
문제 개미전사는 부족한 식량을 충당하고자 메뚜기 마을의 식량창고를 몰래 공격하려고 한다. 메뚜기 마을에는 여러 개의 식량창고가 있는데 식량창고는 일직선으로 이어져 있다. 각 식량창고에는 정해진 수의 식량을 저장하고 있으며 개미 전사는 식량창고를 선택적으로 약탈하여 식량을 빼앗을 예정이다. 이때 메뚜기 정찰병들은 일직선상에 존재하는 식량창고 중에서 서로 인접한 식량창고가 공격받으면 바로 알아챌 수 있다. 따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서는 최소한 한 칸 이상 떨어진 식량창고를 약탈해야 한다. 예를 들어 식량창고 4개가 다음과 같이 존재한다고 가정하자. {1, 3, 1, 5} 이때 개미 전사는 두 번째 식량창고와 네 번째 식량창고를 선택했을 때 최댓값인 총 8개의 식량을 ..
문제 정수 X가 주어질때 정수 X에 사용할 수 있는 연산은 다음과 같이 4가지이다. 1) X가 5로 나누어떨어지면, 5로 나눈다. 2) X가 3으로 나누어 떨어지면, 3으로 나눈다. 3) X가 2로 나누어 떨어지면, 2로 나눈다. 4) X에서 1을 뺀다. 정수 X가 주어졌을때, 연산 4개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 예를 들어, 정수가 26이면 다음과 같이 계산해서 3번의 연산이 최솟값이다. 26 - 1 = 25 25 / 5 = 5 5 / 5 = 1 입력 조건 첫째 줄에 정수 X이 주어진다. (1
들어가기 앞서, 일반적인 피보나치 재귀 함수 코드는 아래와 같습니다. def fibo(x): if (x == 1 or x==2): return x else: return fibo(x-1) + fibo(x-2) 만약, 위와 같은 피보나치 재귀 함수를 사용해 f(6)을 구한다면, f(3) 몇 번 호출될까요? f(3)은 아래와 같이, 3번 호출됩니다. f(6) f(5) f(4) f(3) f(2) f(1) f(2) f(3) f(2) f(1) f(4) f(3) f(2) f(1) f(2) 따라서, 위와 같이 단순히 재귀 함수를 통해 매번 계산하는 방식은, 비효율적입니다. f(n) 에서 n 이 커질수록, 반복해서 호출하는 수가 많아지기 때문입니다. 피보나치 재귀 함수의 시간 복잡도는 O(2^n) 입니다. 따라서, 이..