목록전체 글 (408)
나의 잡다한 노트 및 메모
# 문제 https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net # 소스코드 import sys from collections import defaultdict n = int(input()) isParent = [1] visited = [False] * (n+1) parent = defaultdict(list) tree = [[] for _ in range(n+1)] for _ in range(n-1): a, b = map(int, sys.stdin.readline().split()) tree[a].append(b..
# 문제 https://www.acmicpc.net/problem/2250 2250번: 트리의 높이와 너비 첫째 줄에 노드의 개수를 나타내는 정수 N(1 ≤ N ≤ 10,000)이 주어진다. 다음 N개의 줄에는 각 줄마다 노드 번호와 해당 노드의 왼쪽 자식 노드와 오른쪽 자식 노드의 번호가 순서대로 주어진다. www.acmicpc.net # 소스코드 from collections import defaultdict import sys class Node: def __init__(self, root, left, right): self.root = root self.left = left self.right = right self.leftWidth = 0 self.height = 1 def setLeftWidt..
# 트리 구조 트리란 Node와 Branch를 이용해, 사이클을 이루지 않도록 구성한 데이터구조. 재귀적인 구조이다. 여러 트리의 구조 중 이진트리 형태의 구조는 탐색 알고리즘 구현을 위해 많이 사용된다. # 용어 Node : 트리에서 데이터를 저장하는 기본 요소 Edge : 각 노드들을 연결하는 선 Root Node : 트리 맨 위에 있는 Node Level : 최상위 노드를 Level 0으로 할 때, 노드의 깊이 Parent Node : 부모 노드. 즉, 자신의 노드 위에 있는 노드 Child Node : 자식 노드. 즉, 자신의 노드 밑에 있는 노드 Leaf Node : 자식 노드가 하나도 없는 노드 Siblings : 동일한 Parent Node를 가진 노드 Depth : 트리에서 최대 Level..
동적 프로그래밍 (브루트포스 + 이전 값 재활용) 분할정복 기법을 사용하는 경우가 많다. 큰 문제를 한 번에 해결하기 힘들 때 작은 여러 개의 문제로 나누어서 푸는 기법이다. 작은 문제들을 풀다보면 같은 문제들을 반복해서 푸는 경우가 생기는데 그 문제들을 매번 재계산하지 않고 값을 저장 해두었다가 재사용하는 기법이 동적 프로그래밍이다. 즉, 이미 했던 연산이 반복되는 결점을 보완하기 위해 쓰여지기 시작함 메모이제이션이 동적 프로그래밍 중 하나이다. 메모이제이션이란 재귀 호출 시, 반복적으로 계산되는 것들의 계산 횟수를 줄이기 위해 이전에 계산했던 값을 저장해두었다가 나중에 재사용하는 방법이다. # 문제풀이 방식 문제풀이 방식으로는 TOP-DOWN, BOTTOM-UP 이 존재한다. top-down은 대부분..
#클라이언트, 서버 구조 클라이언트 ----접속---> 서버 # 프로토콜 한마디로 말하면 약속. 명령어들로 구성돼있고 요청하고 응답받는다. 이런 명령어들이 약속돼있고 그걸 통해 통신을 한다. HTTP도 프로토콜, 이메일은 메일을 줄 때 SMTP라는 프로토콜을 쓰고 받을때는 POP3라는 프로토콜로 받는다. FTP는 파일을 주고 받을때 쓰는 프로토콜 # AJAX (Asychronous Javascript And Xml) 웹사이트를 동적으로 만들기 위한 개발기법중 하나 비동기식으로 요청을 주고받아 전체 웹사이트의 정보를 다시 받는것보다 중요한 부분먼저 비동기식으로 요청을 먼저 받아 화면에 먼저 출력하는 그런 기술이다. #동기 비동기 동기는 함수가 다 진행되고 응답을 하기까지 다음 행으로 넘어가지 않는다 보통의..
구글링을 통해 해결방법 왠만한 걸 다 해봤다. 포트포워딩부터 AWS의 EC2 보안그룹이 잘못 돼 있는지 새롭게 설정도 하고... 별의 별 똥꼬쇼를 다 했다 그런데도 결국 안돼 멘탈이 며칠동안 나가있었다가 다시 찾아보자는 마음으로 SSH에 대해서도 공부하고 구글링을 하다가... SK브로드밴드는 SSH의 포트인 22번을 막아놨다고 하더라?????????????? 그걸 왜 지들이 막아놓고 난리인지 진짜 이것때문에 시간 엄청 날렸던 걸 생각하면 속에서 열불이 난다 집에서 결국 못하고 밖에 다른 공유기 와이파이를 통해 하니 PUTTY 접속이 너무 잘 된다 ^^... 허탈해서 진짜... 에휴
클라우드 컴퓨팅 모델, 클라우드 컴퓨팅 배포 모델 2가지로 나눌 수 있다. # 클라우드 컴퓨팅 모델 어플리케이션의 구성 어플리케이션 os : windows/linux computing : cpu + ram storage : hdd/ssd network : 랜카드/랜선 # Iaas : Infrastructure as a Service 인프라만 제공 OS를 직접 설치하고 필요한 소프트웨어를 개발해서 사용 가상의 컴퓨터를 하나 임대하는 것과 비슷함 아까 어플의 구성에서 COMPUTING, STORAGE, NETWORK를 제공하고 그 외는 직접 개발하는 것 예 : AWS EC2 요리하려 할 때 주방만 빌려주는 것 # PaaS : Platform as a Service 인프라+OS+기타 프로그램 실행에 필요한 부..
클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것 #온디맨드: 수요에 반응함 # 서버 클라이언트 아키텍쳐 서버가 없다면 게임에서 한 유저가 스킬을 썼을 때 클라이언트에서 여러 유저의 클라이언트에 직접 정보들을 통신해줘야한다. 그렇다면 시간도 오래걸리고 복잡하고 유저가 정보를 조작할 가능성이 생겨 원활한 게임 진행이 되지 않게 된다. 이때, 서버가 있다면 스킬을 쓴 유저가 정보를 서버에게 보내주고 서버에서 정보를 조작했는지 어떤 조건들에 부합하는지 확인을 하는 등, 서버에서 여러 클라이언트에게 한번에 보내준다. # 데이터센터 서버가 여러개 있는 실제 시설을 뜻함. 이런 데이터센터에는 많은 것들이 필요하다. 컴퓨팅 시스템을 위한 하드웨어 네트워킹 장비 전원공..