일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 비트마스크알고리즘
- 백준
- 최적화
- 비트마스크
- DFS
- verilog HDL
- 가속컴퓨팅
- 비트마스킹
- HW
- HDL
- 15683
- HWEngineer
- verilog
- 알고리즘
- Module
- 14889
- 가속기시스템
- 코딩테스트
- verilogHDL
- 스타트와링크
- boj
- 모듈
- 감시
- Rtl
- dfs연습문제
- RTLEngineer
- testbench
- 모델링
- Today
- Total
목록분류 전체보기 (24)
oohyoo 님의 블로그

안녕하세요.하드웨어 모듈/반도체 IP 개발자를 희망하시는 분들을 위한 좋은 verilog 연습 웹페이지가 있어 공유해드리고자 합니다. SoC, CPU, GPU, NPU등 하드웨어를 설계할 때 verilog HDL 언어가 가장 보편적으로 쓰입니다.이 verilog HDL에 대해 이론적 학습을 마치셨다면 바로 프로젝트를 진행하셔도 좋지만, 아무래도 C언어나 Python과는 다르게 연속 동작/병렬시행 매커니즘이 익숙하지 않아서 기본적인 실수를 하기 쉽습니다. 실제로 저도 정석적인 verilog 코딩을 익히지 않고 이론만으로 곧바로 프로젝트부터 시작했다가 미숙한 코드를 많이 작성하고 지적받았던 경험이 있어서, 초심으로 돌아가서 'verilog HDL 코딩의 정석'을 배워보고 싶었습니다. https://hdlbi..

[문제][풀이]#입력과 출력을 자유롭게 작성해주세요from collections import dequedef solution(H, W, h, w, house): queue = deque() dh = [-1, 0, 1, 0] dw = [0, 1, 0, -1] visited = [[False]*W for _ in range(H)] queue.append((h, w, 0)) while queue: x, y, dist = queue.popleft() for d in range(4): cx = x+dh[d] cy = y+dw[d] if(0

[문제][풀이] #입력과 출력을 자유롭게 작성해주세요from collections import dequedef solution(house, h, w): queue = deque([(h, w, 0)]) dh = [-1, 0, 1, 0] dw = [0, 1, 0, -1] visited = [[-1]*W for _ in range(H)] while queue: x, y, dist = queue.popleft() for d in range(4): cx = x+dh[d] cy = y+dw[d] if 0

[문제] [풀이] #입력과 출력을 자유롭게 작성해주세요from collections import dequedef solution(chizu, sh, sw): queue = deque([(sh, sw, 0)]) dh = [-1, 0, 1, 0] dw = [0, 1, 0, -1] while queue: x, y, dist = queue.popleft() if chizu[x][y] == 3: return dist for dir in range(4): cx = x+dh[dir] cy = y+dw[dir] if (0

[문제] [풀이]def solution(input_string): count_dict = {} prev = None for ch in input_string: if ch != prev: count_dict[ch] = count_dict.get(ch, 0) + 1 prev = ch print(count_dict) lonely_chars = sorted([ch for ch, count in count_dict.items() if count >= 2]) return "".join(lonely_chars) if lonely_chars else "N" .get() 메서드를 살펴보면, ch의 값이 없다면 0을 ..
파이썬의 정렬(Sorting)파이썬에서는 데이터를 정렬하는 데 강력하고 간단한 기능을 제공합니다.sort()와 sorted() 함수는 데이터를 기본적으로 오름차순으로 정렬하며, 사용자 정의 기준을 사용해 커스텀 정렬도 가능합니다.1. 파이썬의 기본 정렬파이썬의 기본 정렬은 Timsort 알고리즘을 사용하며, 시간 복잡도는 **O(N log N)**입니다.2. 정렬 방법(1) sort() 메소드리스트 객체의 원본을 직접 정렬합니다.반환값은 None이며, 원본 리스트가 변경됩니다.numbers = [5, 2, 9, 1, 7]numbers.sort()print(numbers) # [1, 2, 5, 7, 9](2) sorted() 함수원본 데이터를 변경하지 않고 정렬된 새로운 리스트를 반환합니다.리스트뿐 아니..
파이썬의 Set(집합)set은 파이썬에서 제공하는 집합 자료형으로, 중복을 허용하지 않고, 순서가 없는 데이터 구조입니다.수학의 집합 개념을 프로그래밍에서 활용할 수 있도록 제공되며, 교집합, 합집합, 차집합과 같은 집합 연산도 지원합니다.1. Set의 특징중복된 값이 허용되지 않음: python s = {1, 2, 2, 3} print(s) # {1, 2, 3}동일한 값을 여러 번 저장하려고 해도 한 번만 저장됩니다.순서가 없음:s = {1, 2, 3}# print(s[0]) # 오류 발생Set은 순서가 없으므로 인덱스로 접근할 수 없습니다.변경 가능(Mutable):s = {1, "apple", (2, 3)}Set 자체는 변경 가능하지만, 내부에 저장된 요소는 변경 불가능한 값이어야 합니다. (예:..
※본 포스팅은 프로그래머스 pccp 교육자료를 참고하였습니다. 힙(Heap)힙(Heap)은 완전 이진 트리(Complete Binary Tree) 기반의 자료구조로, 우선순위 큐(Priority Queue)를 구현하는 데 자주 사용됩니다.최댓값 또는 최솟값을 빠르게 찾을 수 있는 성질을 가지며, 힙 정렬에도 활용됩니다.1. 힙의 종류최소 힙(Min-Heap):부모 노드가 자식 노드보다 항상 작거나 같은 값.루트 노드에는 가장 작은 값이 저장됨.최대 힙(Max-Heap):부모 노드가 자식 노드보다 항상 크거나 같은 값.루트 노드에는 가장 큰 값이 저장됨.2. 힙의 특징완전 이진 트리:마지막 레벨을 제외하고 모든 레벨이 꽉 차 있으며, 마지막 레벨도 왼쪽부터 채워짐.힙 속성:최소 힙: 부모 노드 ≤ 자식 노..

[문제] [풀이]def count_regions(grid): n = 7 visited = [[False] * n for _ in range(n)] directions = [(-1, 0), (1, 0), (0, -1), (0, 1)] def dfs(x, y, color): visited[x][y] = True count=1 for dx, dy in directions: nx, ny = x + dx, y + dy if 0 =3: region_count+=1 return region_countgrid = [list(map(int, input(..

[문제] [풀이]#입력과 출력을 자유롭게 작성해주세요def solution(pic, W, H): dh = [-1, 0, 1, 0] dw = [0, 1, 0 , -1] def dfs(x, y): stack=[(x, y)] size = 0 while stack: cx, cy = stack.pop() if 0 Stack 자료구조를 활용한 DFS의 구현이다. Stack은 FILO 방식이기 때문에 deque 라이브러리를 사용할 필요 없이 리스트 자료형을 이용한다. Stack을 활용한 DFS의 경우에는 "방문 여부를 반드시 처리할 것" 과 시간절약을 위한 "조건부 push"를 기억하자. 문제를 살펴보..