반응형

분류 전체보기 492

DFS, BFS 공부 전에 알아야 할 것

DFS, BFS 공부 전에 알아야 할 것 Stack 자료구조 입구와 출구가 동일한 형태로, 선입후출 자료구조. Python에서는 다른 표준 라이브러리를 이용할 필요 없이 리스트 자료형을 이용하여 스택을 구현한다. 가장 오른쪽에 자료를 산입하는 append()와 가장 오른쪽에서 하나의 원소를 꺼내는 pop()를 지원하는데, 이를 그대로 이용해서 스택과 같이 사용할 수 있다. 나중에 모든 작업이 끝난 후 스택을 출력할 땐, 최상단 원소부터 출력하려면 [::-1]을 통해 출력해야한다. Queue 자료구조 선입선출의 자료구조, 차례대로 작업을 시행하는 대기열을 나타내고자 할 때 사용. 큐 자료구조를 Python에서 이용하고자 할 땐 deque(덱) 라이브러리를 사용하면 된다. Stack과 같이 리스트 자료형으로..

백준 # Python_2606_바이러스

2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨..

# 3. APS/백준 2021.09.25

Python # append()와 extend()의 차이점

list.append(x)는 list의 끝에 1개의 x를 집어넣는다. list.extend(iterable)는 list의 끝에 iterable의 모든 항목을 집어넣는다. append() x = ['Hi', 'Hello', '안녕'] y = ['나는', '파이썬'] x.append(y) print(x) ['Hi', 'Hello', '안녕', ['나는', '파이썬']] extend() x = ['Hi', 'Hello', '안녕'] y = ['나는', '파이썬'] x.extend(y) print(x) ['Hi', 'Hello', '안녕', '나는', '파이썬'] 만약 리스트가 아닌 문자열 형태가 된다면 아래와 같습니다. append() x = ['Hi', 'Hello', '안녕'] y = '나는 파이썬' x...

BFS(너비우선탐색)이란

그래프 탐색 하나의 정점에서 시작하여 모든 정점을 한 번씩 방문하는 것 예) 회로에서 특정 단자와 단자가 연결되어있는지 너비우선탐색(BFS, Breadth-First Search) 임의의 노드에서 시작하여 인접한 노드를 탐색하는 방법. 시작 노드에서 부터 가까운 노드를 먼저 방문하고 멀리 떨어진 정점은 나중에 방문하는 순회방법. 두 노드사이의 최단경로를 찾아야하거나 임의 경로를 찾고싶을 때 사용. 어떤 노드를 방문했는지 반드시 검사해야 한다. 하지 않으면 무한루프에 빠질 수 있다. BFS는 차례로 저장하고 꺼낼 수 있는 큐를 사용하여 선입선출 원칙으로 탐색한다. BFS는 방문 노드의 인접한 노드를 큐에 저장하는 것이 DFS와 다른 점. 🔽 REFERENCE 알고리즘 - BFS(너비 우선 탐색) 이번에 살..

TCP/IP의 탄생배경 및 설명

인터넷의 시초는 서로간의 통신을 위해서 시작이 되었고 상호간의 접속을 위한 프로토콜(일종의 약속)이 필요했다. 이를 위해서 OSI라는 프로토콜이 만들어졌다. 그런데, 표준규약 또는 통신사들이 내세우는 표준이라는 것이 뒤떨어지고 또는 너무 무겁기 때문에 실제로는 이 표준을 뒤로 하고 TCP/IP표준이 더 많이 사용하게 되었다. TCP/IP 프로토콜도 OSI 7 layer를 참조한 것이고, 그 중 필요한 것들 위주로 경량화 했다고 보면 된다. TCP/IP는 4계층이다. 링크 계층, IP계층, 전송계층, 애플리케이션 계층. 링크계층은 직접 연결해서 데이터를 보내는 것이다. 이더넷 네트워크 카드를 의미한다. IP계층은 주소와 같다. 어디로 보낼 것인지 어디와 통신할 것인지 대상을 연결한다. 선로와 같은 역할을 ..

📜 TIL 2021.09.22

DTO와 VO

DTO Data Transfer Object 계층간 데이터 교환을 위한 객체(Java Beans)이다. 즉, 데이터를 객체로 변환시킨다. C#과는 달리 Java에서는 프로퍼티를 문법적으로 제공해주지 않기 때문에 getter/setter에서 get과 set 다음에 나오는 단어가 프로퍼티라고 약속해주었다. 즉, getter/setter에 의해 만들어진 것에 의해 프로퍼티가 결정된다는 말이다. 자바에서는 다양한 프레임워크에서 데이터 자동화 처리를 위해 리플렉션 기법을 사용한다. 그런데 이 데이터 자동화 처리에서 가장 중요한 것이 표준규격이다. 즉, DTO에서 프로퍼티가 name, age면 여기에 키값으로 들어온 데이터는 리플렉션에 의해 setter를 실행시켜 데이터를 넣을 수 있는 것이다. 그런데 setter..

백준 # Python_17298_오큰수

17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, ..

# 3. APS/백준 2021.09.19

백준 # Python_17608_막대기

17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 문제 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 6, 9, 7, 6, 4, 6 이다. 일렬로 세워진 막대기를 오른쪽에서 보면 보이는 막대기가 있고 보이지 않는 막대기가 있다. 즉, 지금 보이는 막대기보다 뒤에 있고 높이가 높은 것이 보이게 된다. 예를 들어, 그림과 같은 경우엔 3개(6번, 3번, 2번)의 막대기가 보인다. ..

# 3. APS/백준 2021.09.18

Boolean과 boolean의 차이 = 참조타입과 원시타입의 차이

우선, Boolean과 boolean의 차이를 알아보자. Boolean (참조타입; reference type) true, false, null 값을 가진다. ∴ Null 체크를 필요로할 때 참조형을 사용하자. boolean (원시타입; primitive type) true, false 값을 가진다. ∴ Null 체크가 불필요한 경우 자료형을 사용하자. (Unboxing을 해줄 필요가 없기 때문에 시간을 단축시킬 수 있다.) 참조타입과 원시타입의 차이 자료형 : int, float, double, char, boolean 참조형 : Integer, Float, Double, Boolean 자료형을 객체로 감싼 것이 참조형이다. 원시타입은 null을 담을 수 없는 반면에 참조 타입은 null을 입력값으로 ..

반응형