Home

PCIe 구조 및 특징 정리

1. PCIe 의 대표적인 특징들 전송과 수신이 동시에 가능한 양방향 통신(bidirectional connection)이 가능합니다. 한 link에서는 보내거나 받는 하나의 역할만을 할 수 있기 때문에, Simplex 2개가 합쳐진 Dual-simplex connection이라고 합니다. Link 안에는 여러 개의 Lane이 있습니다. x1, x2, x4, x8, x16, x32와 같은 방식으로 구성되어있습니다. 이전에 쓰여진 software에서도 지원가능하게 설계됩니다. 이전의 PCI에서 쓰이던 요소들은 유지되고 확장되어가는 형태로 이루어지고 있습니다. 직렬(Serial) 통신은 병렬(Para...

Read more

PCIe Ordered Set이란? 개념 정리

1. What is Ordered Set? Link간의 communication은 Ordered Set을 통하여 이루어집니다. 모든 Ordered Set은 K character(comma, COM라고도 표기)로 시작하고, 전송되는 Ordered Set에 따라서 K or D chracter를 가지고 있을 수 있습니다. Ordered Set은 항상 four byte boundraries로 정렬되며, 아래의 다양한 상황들에서 전송됩니다. Error Recovery, Initiating Events, Exit From Low Power States : TS1 or TS2(Training Sequence) 전송 ...

Read more

[프로그래머스] 베스트앨범

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/42579 2. 풀이 방법 hash를 이용하여 노래 장르를 key로 하고 value는 (노래의 인덱스, 재생 횟수)를 인자로 가지는 배열을 가집니다. 위의 요소들의 총 재생시간을 더하여 어떤 노래 장르가 먼저 나올지 결정합니다. 각 key의 배열을 정렬합니다. 정렬할 때 재생회수가 같은 경우에는 적은 인덱스를 가진 요소를 앞으로 가져옵니다. 이 때, 2개의 노래만 최종 노래로 지정할 것이기 때문에 2개만 남기고 제거합니다. 장르의 순서를 지정하였으면 장르 이름을 이용하여 hash에서 가지고 있...

Read more

[프로그래머스] 네트워크 문제풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/43162 2. 풀이 방법 bfs를 이용하여 문제를 해결합니다. 방문한 노드는 is_visited 배열을 사용하여 표시합니다. 모든 노드를 각각 순차적으로 확인합니다. 방문한 곳이 아니라면 queue에 넣습니다. queue에 있는 요소를 pop 하면서 연결된 노드가 있는지 확인합니다. 연결된 노드는 방문한 노드가 아니라면 queue에 새로 넣습니다. 모든 연결된 노드를 확인하면 queue에 남아 있는 요소가 없어집니다. 위의 한 과정이 진행되면 한 그룹을 확인한 것입니다. 정답에 1을 더해줍니다....

Read more

[프로그래머스] 타일 장식물 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/43104 2. 풀이 방법 직사각형의 짧은 선분의 길이는 현재 가장 큰 도형의 길이이고, 직사각형의 긴 선분 길이는 현재 가장 큰 도형의 길이 다음의 도형의 크기입니다. 이를 for문을 이용하여 값을 구해줍니다. 3. 소스코드 3.1. python 정답 코드 def solution(N): arr = [0] * (N+1) arr[0] = 1; arr[1] = 1 for i in range(2, N+1): arr[i] = arr[i-1] + arr[i-2] ...

Read more

[프로그래머스] 2 x n 타일링 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/12900?language=python3 2. 풀이 방법 arr[i] 의 값을 구하기 위해서는 아래의 2가지 경우의 수가 존재합니다. arr[i-1] 의 모든 경우의 수에서 세로 막대기 1개를 추가하는 경우 arr[i-2] 의 모든 경우의 수에서 가로 막대기 2개를 추가하는 경우(세로 막대 2개를 추가하는 경우는 이미 위의 케이스에 해당 됨) 즉, arr[i] = arr[i-1] + arr[i-2] 인 것을 알 수 있습니다. 3. 소스코드 3.1. python 시간 초과 코드 숫자가 매우 커...

Read more

[백준] 2399번 풀이 _ 거리의 합

1. 문제 https://www.acmicpc.net/problem/2399 2. 풀이 방법 2.1. $ O(N^2) $ 풀이 보자마자 떠오르는 생각. 직접 하나하나씩 비교해서 값을 구합니다. c언어의 경우에 통과할 수 있지만, python은 이렇게 해도 시간초과가 발생합니다. 2.2. $ O(N) $ 풀이 모든 구해야 하는 값을 위의 그림처럼 표로 나열해봅니다. 그러면 앞에 있는 [i] 의 개수는 $ i $개, 뒤에 있는 -[i] 개수는 $ n - i - 1 $ 개가 나오게 됩니다. 두 수의 합은 $ i * i + -i * (n - i - 1) = i * i + i * (-n + i + 1) = i...

Read more

Repeater, Redriver, Retimer란? 개념 정리

1. Repeater란? 1.1. Repeater의 정의 repeater의 역할 위키백과에서는 Repeater에 대하여 아래와 같이 언급하고 있습니다. 중계기(中繼器, 영어: repeater, 문화어: 반복기)는 신호를 받아 더 높은 수준에 더 높은 힘으로 방해가 되는 곳의 반대 쪽으로 재전송함으로써 신호가 더 먼 거리에 다다를 수 있게 도와 주는 전자 기기이다. 라디오 중계기(radio repeater), 전화 중계기(telephone repeater) 등이 있다. 전기 통신 분야에서 “중계기”라는 용어는 다음과 같은 의미를 표준으로 잡고 있다: 원본이 아날로그냐 디지털이냐에 ...

Read more

python 문자열(string)의 단어(character)를 list로 바꾸기

python에서 string의 단어(character)를 list로 만드는 방법은 아래와 같이 쉽게 할 수 있습니다. List Comprehension를 사용하는 방법 def str_split(word): return [char for char in word] print(str_split('test')) list()를 사용하는 방법 def str_split(word): return list(word) print(str_split('test'))

Read more

[백준] 10026번 풀이 _ 적록색약

1. 문제 https://www.acmicpc.net/problem/10026 2. 풀이 방법 모든 row와 col 을 살펴보면서 해당 블록의 주변에 있는 요소들이 같은 색일 경우에 방문한 것으로 체크하고, dfs를 통하여 상하좌우 요소들을 모두 살펴봅니다. 3. 주의 사항 import sys sys.setrecursionlimit(100000) python은 재귀함수 호출 횟수가 제한되어 있어(1000회) 그 횟수를 늘려주기 위한 메소드를 사용해야 문제에서 런타임 에러가 나지 않습니다. 4. 소스코드 import sys sys.setrecursionlimit(100000) N = int(inpu...

Read more