[Python]Class 는 왜 필요한가?
·
SW개발/Python
클래스의 필요성 예시를 통해 클래스의 필요성에 대해 파악해보려고 한다. 다음과 같은 코드가 있다. result = 0 def add(num): global result result += num return result print(add(3)) print(add(4)) # 결과 3 7 위의 코드는 계산기의 더하기 기능을 구현한 코드이다. 하지만 2대의 계산기가 필요한 경우에는 add 함수 하나만으로는 결과값을 유지할 수 없다. 그렇기 때문에 add1, add2 와 같이 여러 개의 함수가 필요할 것이다. 이렇게 되면 계산기가 3, 5 이런식으로 많이 필요하게 되면 중복되는 코드는 점점 많아지고 지저분해질 것이다. 이런 경우에 클래스의 사용을 통하여 간단하게 해결할 수 있다. class Calculator: ..
[백준]1966번 프린터 큐 - 큐
·
SW개발/코딩테스트
from collections import deque n = int(input()) for i in range(n): queue = deque([]) num, wh = map(int, input().split()) temp = (list(map(int, input().split()))) for i in range(len(temp)): queue.append(temp[i]) temp[wh] = 'answer' cnt = 0 while True: if queue[0] == max(queue): # 큐의 맨 앞자리가 우선순위가 제일 높은 경우 cnt = cnt + 1 # 카운트 if temp[0] == 'answer': # 지정한 인덱스가 맞을 경우 print(cnt) # 출력 break else: # 우선순..
[백준]11866번 요세푸스 문제 0 - 큐
·
SW개발/코딩테스트
from collections import deque queue = deque([]) n, k = map(int, input().split()) result = [] for i in range(n): queue.append(i+1) while True: if len(queue) == 0 : break for i in range(k-1): queue.append(queue.popleft()) result.append(queue.popleft()) print('') 코드 설명 반복문을 돌면서 큐의 길이가 0 인 경우 종료 한다. 반복문 안에서 K의 값 만큼 반복문을 수행하는데, 첫 번째 원소의 자리를 바꾸기 위해 popleft() 한 값을 append() 한다. K 번의 반복이 끝난 후 결과 리스트에 que..
[백준]2164번 카드 2 - 큐
·
SW개발/코딩테스트
from collections import deque queue = deque([]) n = int(input()) for i in range(1, n+1): queue.append(i) while True: if len(queue) == 1: break queue.popleft() queue.append(queue.popleft()) print(queue[0]) 코드 설명 큐 사용을 위해 deque 를 import 한다. 반복문을 돌면서 큐에 카드를 넣어준다. (이때 순서는 가장 큰 숫자가 마지막에 들어옴) 큐에 카드가 한장만 남을 때 까지 반복문을 수행한다. 한장은 버리고 한장은 빼서 제일 아래로 옮기는 과정을 반복한다. 큐에 남은 카드를 출력한다. Point: 두번의 연산을 연달아 수행한다. pop..
[백준]18258번 큐 2 - 큐
·
SW개발/코딩테스트
import sys from collections import deque n = int(sys.stdin.readline()) queue = deque([]) for i in range(n): command = sys.stdin.readline().strip() if command.split()[0] == 'push': queue.append(command.split()[1]) elif command == 'pop': if len(queue) > 0 : print(queue.popleft()) else : print(-1) elif command == 'size': print(len(queue)) elif command == 'empty': if len(queue) == 0 : print(1) else ..
[백준]1874번 스택 수열 - 스택
·
SW개발/코딩테스트
n = int(input()) list=[] cnt = 1 stack = [] result = [] temp = True for i in range(n): list.append(int(input())) for i in range(n): while cnt
[백준]4949번 균형잡힌 세상 - 스택
·
SW개발/코딩테스트
def vps(p): stack = [] check = True for i in p: if i == "(" or i == "[": stack.append(i) elif i == ")" or i == "]": if i == ")": if not stack or stack[-1] == "[" : # ")", "]" 로 먼저 시작되는 경우 no check = False break else: stack.pop() elif i == "]": if not stack or stack[-1] == "(": check = False break else: stack.pop() if not stack and check == True: print("yes") else: print("no") while True: p = inp..
[REST]REST API 란?
·
SW개발/IT 용어
REST API 란? "Representational State Transfer" HTTP URI를 통해 자원을 명시하고, HTTP METHOD를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. 즉, 자원의 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다 REST 구성 자원(Resource) - URI 행위(Verb) - HTTP METHOD 표현(Representations) REST 특징 Uniform - URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일 Stateless - REST는 무상태성 성격을 갖는다. 작업을 위한 상태정보를 따로 저장하고 관리하지 않음. Cacheable - HTTP 기존 웹표준을 그..
[Docker]Docker 란?
·
SW개발/IT 용어
Docker 란? Linux 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다. Docker를 사용하면 컨테이너를 매우 가벼운 모듈식 가상 머신처럼 다룰 수 있다. 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 유연하게 이동이 가능하다. Docker 작동 방법 Docker 기술은 Linux 커널과 함께 Cgroups 및 네임스페이스와 같은 커널의 기능을 사용하여 프로세스를 분리함으로써 독립적으로 실행될 수 있도록 한다. Docker를 포함한 컨테이너 툴은 이미지 기반 배포 모델을 제공하므로 여러 환경 전반에서 애플리케이션 또는 서비스를 손쉽게 공유할 수 있다. Docker 사용 이유? 쉽고 빠른 실행 환경 구축, 가볍고 빠른 실행 속도 하드웨어 자원 절감 공유 환경 제공 쉬운 배포
[백준]9012번 괄호 - 스택
·
SW개발/코딩테스트
n = int(input()) def vps(p): stack = [] for i in p: if i == "(": stack.append(i) else: if not stack: print("NO") return else: stack.pop() if not stack: print("YES") return else: print("NO") return for i in range(n): p = input() vps(p) 코드 설명 반복 횟수를 n 변수에 입력 받는다. 그 후 반복문을 통해 괄호를 입력받고, 함수를 실행한다. 만약 문자가 "(" 라면 스택에 넣는다. 문자가 ")" 일때 만약 스택에 아무 것도 없다면 "NO"를 출력한다. 스택에 값이 존재한다면 "("를 pop 한다. 반복문을 돌고 난 후 스택이..