티스토리

수프로
검색하기

블로그 홈

수프로

suprogrammers.tistory.com/m

숲로 님의 블로그입니다.

구독자
0
방명록 방문하기

주요 글 목록

  • [Docker] VirtualMachine불필요한 오버헤드가 생겨이걸 가볍게 해줄 수 없을까? -> container Docker Host안에 DockerDemo이 있고DockerDemon은 어떻게 제어? CLI 환경에서손쉽게 빌드하기 위해서 Registry제공  Docker run은 이미지를 생성하고 실생해같은 이름으로 컨테이너 실행하면 오류종료는 되었지만 컨테이너는 남아있어컨테이너 삭제하고 실행해야 함 공감수 0 댓글수 0 2024. 5. 16.
  • 운영체제 & 서버 chap02. 운영체제파일시스템os는 파일 시스템을 통해 파일(컴퓨터 시스템의 메모리에 저장된 특정 정보의 모음)을 관리데이터와 정보를 저장장치에 저장해 쉽게 검색할 수 있도록 하는 데이터 구조내부적으로 0과 1로 이루어진 데이터가 block단위로 관리됨특정 block 모음을 사용자가 이해하기 쉽도록 추상적(논리적) 객체 개념인 파일이라고 이름 붙임 필요한 이유?저장장치에 데이터가 삭제, 추가 될 때 작은 간격이 발생하고 이 틈에 새 데이터가 저장됨일정 간격의 블록 단위로 분할하지 않으면, 작은 틈이 파일의 요구 공간보다 더 클경우 데이터를 연속적으로 저장하기 어려움 Unix, Linux 운영체제 열 운영체제는 indoe방식의 파일 시스템 사용super block: 파일 시스템에 대한 정보, 파티션 정보.. 공감수 0 댓글수 0 2024. 5. 9.
  • Docker https://github.com/drum-grammer/docker-pro GitHub - drum-grammer/docker-proContribute to drum-grammer/docker-pro development by creating an account on GitHub.github.com III. 도커 설치부터 실행 튜토리얼도커 설치1. 도커 공식 웹사이트에서 "Get Started"를 클릭합니다.2. OS에 맞는 설치 파일을 다운로드 받습니다.MacOS의 경우 "Download for Mac"을 클릭합니다.Window 일 경우 "Download for Windows"를 클릭합니다.다운로드한 설치 파일을 실행합니다.도커 컨테이너 실행 시키기1. 나의 사전 미션 폴더를 만들고 해당 폴더로 이동.. 공감수 0 댓글수 0 2024. 5. 8.
  • 컴퓨터 구조 & 운영체제 Chap1. 컴퓨터 구조 1. 컴퓨터 하드웨어 구성  1) CPU(Central Processing Unit) 중앙처리장치메모리에 저장된 명령어를 읽어 수행하는 주체메모리에 올라간거 CPU가 시분할로 순차적 처리 (* 병렬처리로 발전중)언제 끝날지 예측 가능 인공지능-CPU와 맞지 않아  2) 메모리 메모리- 휘발성, 속도 빠름* ssd- 비휘발성 주기억장치- RAM- ROM보조기억장치- HDD- SDD 서버와 PC 차이점?서버 내부적으로 이중화 되어있음 3) 입출력장치(I/O Unit)I/O는 CPU 메모리 등 요소간에 BUS System에 의해 연결됨Input:마우스 키보드 등Output:모니터, 스피커, 프린터 등4) 시스템버스컴퓨터의 각 구성 요소 간 데이터 신호를 전달하기 위한 데이터 전달 경로.. 공감수 0 댓글수 0 2024. 5. 8.
  • numpy 함수 정리 numpy Numeric Python import numpy as np : 입력받은 파이선 리스트를 넘파이 배열로 바꾸기 Numpy는 ndarray 라는 넘파이 전용 리스트를 사용하는데 쉽게 행렬이라 생각하시면 됩니다. 생성함수(Array Creation) • np.array() : 입력받은 파이선 리스트를 넘파이 배열로 바꾸기 • np.arange(N) : 0에서부터 N-1까지 1씩 증가하는 배열 만들기 >>> np.arange(5) array([0, 1, 2, 3, 4]) >>> np.arange(10, 30, 5) array([10, 15, 20, 25]) >>> np.arange(0, 2, 0.3) # it accepts float arguments array([0. , 0.3, 0.6, 0.9,.. 공감수 0 댓글수 0 2023. 3. 12.
  • 파이썬 리스트 공백과 함께 출력하기 1. end or sep 구분자 이용하기https://bamdal.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%ACpython-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EA%B3%B5%EB%B0%B1%EC%9C%BC%EB%A1%9C-%EA%B5%AC%EB%B6%84%ED%95%98%EC%97%AC-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0for문을 사용해서 주로  2. join 메서드 활용하기숫자의 경우 문자열로 타입 변경해주어야 함!strList = ["A","B","C","D","E"]numList = [1,2,3,4,5]print(strList)print(numList)print(' '.join(strList))print(' '.jo.. 공감수 0 댓글수 0 2023. 2. 26.
  • [재귀함수] 재귀함수? 메소드 혹은 함수의 내부에서 자기 자신의 메소드 혹은 함수를 다시 호출하는 함수 코드의 간결화 및 변수의 최소화를 위해 사용 조건문을 활용하여 종료조건을 삽입해야 함 def recur(index, value): if index == len(data): result.add(value) else: recur(index +1, value+data[index]) recur(index+1, value) data = [3, 5, 8] result = set() recur(0,0) print(result) * 재귀함수 활용 1) 팩토리얼 n! = n * (n-1) * ... 2 * 1 def factorial(n): if n ==1: reutrn 1 else: return n * factorial(n-1).. 공감수 0 댓글수 0 2023. 2. 8.
  • input 입력 여러 개 받기 1) map 함수를 사용하여 공백을 기준으로 split>> a, b = input().split() # 문자열로>> a, b = map(int, input().split()) # 정수형으로>> num_list = list(map(int, input().split())) # 리스트로 2) 문자열 여러줄 입력받기>> s_list = [input() for _ in range(n)] # n줄 입력 받기  3) 한 문자열 받아서 한 글자씩 나누어 더하기 ex)s = input()for i in range(len(s)):sum += int(s[i]) # 문자열은 슬라이싱 가능  4) 띄어쓰기 없이 정수 여러 개 입력받아 2차원 배열로 저장하기two_d = [list(map(int, input())) for _ i.. 공감수 0 댓글수 0 2023. 2. 6.
  • [탐색의 종류] 완전탐색/이분탐색/깊이우선탐색/너비우선탐색 1) 완전탐색: 브루트 포스라고도 불리며 컴퓨터의 빠른계산 성능을 활용하여 가능한 모든 경우의 수를 탐색풀리지 않는 문제는 없으나 효율성 관점에서 최악.. - 완전탐색 구현방법ㆍ 반복문ㆍ 재귀함수(완전탐색 외에도 동적계획법, 백트래킹, 탐욕법에서도 사용)# 반복문으로 구현def solution(trump): for i in range(len(trump): if trump[i] == 8: return i return -1 # 재귀함수로 구현def solution(trump, loc): if trump[loc] == 8: return loc else: return solution(trump, loc+1) 2) 이분탐색이진검색이라고도 표현하며 오름.. 공감수 0 댓글수 0 2023. 2. 5.
  • 스택, 큐, 덱 1) 스택(Stack) - 데이터를 접시쌓듯이 차곡차곡 쌓는다 - 맨 마지막에 들어온 데이터 먼저 차출됨(LIFO) 선입후출 - FILO(First In Last Out)구조로 삽입과 삭제 연산이 동일한 한군데에서 발생 - 삽입/삭제 연산에 있어 시간복잡도가 O(1) - 이전에 활용한 데이터를 역으로 추적하거나 처음 들어온 데이터보다 나중에 들어온 데이터가 빨리나갈 때 사용 - List의 pop() 을 활용하면 Stack처럼 사용할 수 있음 - Python에서 LifoQueue라는 구현체가 있음 - 활용예시: 브라우저 뒤로가기 앞으로가기, 깊이 우선 탐색(DFS) # 스택 직접 구현 class Stack(list): push = list.append def peek(self): # 가장 마지막에 있는 데.. 공감수 0 댓글수 0 2023. 2. 2.
  • 시간복잡도(Big-O) 시간복잡도를 표기하는 방법Big-O(빅-오) ⇒ 상한 점근Big-Ω(빅-오메가) ⇒ 하한 점근Big-θ(빅-세타) ⇒ 그 둘의 평균위 세 가지 표기법은 시간 복잡도를 각각 최악, 최선, 중간(평균)의 경우에 대하여 나타내는 방법Big-O빅오 표기법은 최악의 경우를 고려하므로, 프로그램이 실행되는 과정에서 소요되는 최악의 시간까지 고려할 수 있기 때문이다.“최소한 특정 시간 이상이 걸린다” 혹은 “이 정도 시간이 걸린다”를 고려하는 것보다 “이 정도 시간까지 걸릴 수 있다”를 고려해야 그에 맞는 대응이 가능하다.Big-O 표기법은 ‘입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?’를 표기하는 방법이다. 표기 예시형태O(1)상수O(log n)로그O(n)선형O(n log .. 공감수 0 댓글수 0 2023. 2. 2.
  • 백트래킹 백트래킹?현재 상태에서 가능한 모든 경로를 따라 들어가 탐색하다, 원하는 값과 불일치하는 부분이 발생하면 더 이상 탐색을 진행하지 않고 전 단계로 돌아가는, 즉 이름 그대로 방금 왔던 길을 되짚어가는, backtrack1 하는 알고리즘이다. Promising : 트리 구조를 기반으로 DFS로 깊이 탐색을 진행하면서 각 루트에 대해 조건에 부합하는지 체크한다.Pruning (가지치기): 해당 트리에서 조건에 맞지않는 노드는 더 이상 DFS로 깊이 탐색을 진행하지 않고 가지치기를 한다. 해를 구하는 도중 해가 아니어서 막히면 막히기 전으로 다시 돌아가서 해를 찾는 기법가상의 트리에서 해를 구하기 위해 부모 노드에서 자식 노드까지 뻗어나간다. 만약 해당 노드가 조건에 맞지 않는다면 다시 부모노드로 돌아간다.해.. 공감수 0 댓글수 0 2023. 1. 31.
  • 삼항연산자 입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자. 단, 3항 연산을 사용한다. 따라서 3항 연산을 중첩해(괄호로 묶는 등..) 이용하면 여러 값들을 순서대로 비교해 가장 큰/작은 값을 계산할 수 있다. 예를 들어 (a if a>b else b) if ((a if a>b else b)>c) else c 와 같은 계산식은 a, b, c 의 값 중 가장 큰 값으로 계산된다. “연산자 우선순위”를 검색하면 우선순위와 결합방향이 나온다. 예를 들어 변수에 어떤 값을 대입하는 대입(assign) 연산자 = 의 우선순위는 가장 낮고, 오른쪽에서 왼쪽의 결합방향을 가진다. a, b, c = input().split() a = int(a) #변수 a에 저장되어있는 값을 정수로 바꾸어 다시.. 공감수 0 댓글수 0 2023. 1. 28.
  • 비프시프트연산 왼쪽 비트시프트()가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가되고, 가장 오른쪽에 있는 1비트는 사라진다. 예시 n = 10 print(n1) #10을 반으로 나눈 값인 5 가 출력된다. print(n2) #10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다. 정수 10의 2진수 표현은 ... 1010 이다. 10 > 1 을 계산하면 ... 101 이 된다. 이 값은 10진수로 5이다. ** python에서 실수 값에 대한 비트시프트 연산은 허용되지 않고 오류가 발생한다. (실수 값도 컴퓨터 내부적으로는 2진수 형태로 저장되고 비트시프트 처리가 될 수 있지만, python 에서는 허용하지 않는다.) 정수 2개(a, b)를 입력받아 a를 2b배.. 공감수 0 댓글수 0 2023. 1. 28.
  • input 대신 sys.stdin.readline 시간복잡도 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. , 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다. import sys n = sys.stdin.readline() 공감수 0 댓글수 0 2023. 1. 20.
  • 10진수, 8진수, 16진수 10진수를 8진수, 16진수로 출력하기 '%x'%n print('%X%n) 대문자 형태 문자열로 출력 %x 16진수(hexadecimal) %o 8진수(octal) 16진수를 10진수로 ㅂ a = input() n = int(a,16) 공감수 0 댓글수 0 2023. 1. 19.
  • 입력이 끝날 때까지 받는 End Of File과 sys 파이썬 입력이 끝날때까지 받는 경우(End Of File, EOFerror) (velog.io) 파이썬 입력이 끝날때까지 받는 경우(End Of File, EOFerror) 링크텍스트파이썬 입력이 끝날때 까지 받고 종료하는 조건sys를 사용하는 방법EOFError 예외 처리 velog.io 갑자기 파일의 끝이 올 것을 예상하지 못 ctrl-d 테스트 케이스의 개수가 주어지지 않았으므로 EOF를 판단해서 프로그램을 종료해야 함 1. 예외처리로 EOFError를 처리하기 input 함수는 파일의 끝일 때 EOFError를 발생한다. 2. sys라이브러리의 readlines() 사용하기 sys.stdin.readlines()를 사용해 파일의 끝까지 가져오기 가져온 내용안에서 반복문을 사용하여 import sy.. 공감수 0 댓글수 0 2023. 1. 15.
  • 오류 처리를 위한 try-except문 반복문에서 if문을 넣어 어떨 때 멈춰라 하는 break는 배웠으나 테스트 케이스가 들어오지 않을 때 끝내는 법은 오류가 났을 때 멈추는 거는 백준10951번 A+B-4 두 수로 이루어진 여러 개의 테스트 케이스를 입력받아 두 수의 합을 출력하는 문제 try-except 구문을 통해 에러가 발생되도 프로그램이 멈추지 않고 계속 진행될 수 있도록 try 구문에는 에러가 발생할 여지가 있는 문장을 작성하고 except 구문에는 에러가 발생 시 실행시킬 문장을 작성한다. try: 실행코드 except 예외 as 변수: 예외처리코드 try: ... except [발생 오류[as 오류 메시지 변수]]: ... try: 실행 코드 except: 예외가 발생했을 때 수행할 코드 else: 예외가 발생하지 않았을 때 .. 공감수 0 댓글수 0 2023. 1. 15.
  • 입력과 출력 그리고 map에 대해 프로그래머스 문제만 풀다가 백준 문제를 풀려고 한다. 그전에 입력과 출력에 대한 이해가 있어야 하기에 codeup에서 python 기초 100제를 풀며 기초를 다졌다. 코드업에서는 map함수에 대해 알려주지 않았지만 다른 사람들의 풀이를 보면 map함수가 자주 나온다. 입력과 출력 그리고 map함수에 대해 정리해보고자 한다. 01. 입력 값 받기 1) input() 변수 = input()을 실행시키면 키보드로 입력한 값을 변수에 저장한다. 이때 input은 사용자가 입력한 값을 문자열로 인식한다. 2) 타입 변화 입력한 값을 원하는 형태로 계산하거나 처리하기 위해서는 어떤 타입인지 명확히 구분해야 한다. ex) 문자열이 아닌 정수 A를 출력하기 위해서는 int()를 통해 타입 변화를 시켜야 한다. A =.. 공감수 0 댓글수 0 2023. 1. 15.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.