백준 1038 감소하는 수

문제 링크 문제 해결 N번째 감소하는 수가 몇인지 출력하는 문제, N은 최대 100만까지 입력된다. 간단하게 0부터 987654321까지 감소하는 수인지 판별하는것은 시간초과가 나오므로, 감소하는 수의 특성을 이용하여 풀어야한다. 감소하는 수는 955같이 중복이 나오면 안되고 맨 앞자리의 수에 의해 나머지가 결정된다. 예를들어 특정 감소하는 수가 5로 시작된다면 나머지는 반드시 {1,2,3,4}의 조합으로 이루어져야 한다. 이런 성질을 이용해서 1부터 10까지 대표 앞자리를 설정한 후 각 앞자리마다 파생되는 나머지 숫자들을 조합하면 된다. 1 10 21 -> 210 -> 20 -> 20 32 -> 321 -> 3210 -> 320 31 -> 310 30 43 -> 432 -> 4321 -> 43210 -> 431 -> 430 ....

February 5, 2023 · 2 min · 233 words · ralpioxxcs

백준 9328 열쇠

문제 링크 문제 해결 맵에 있는 탐색 가능한 모든 문서의 갯수를 찾는 문제로, BFS를 이용하여 풀었다. 특이한 점은 주어진 열쇠로 맵에 있는 문을 열어서 이동할 수 가 있다는것인데, 열쇠를 맵을 탐색하면서 추가적으로 획득할 수 있기 때문에 이 부분을 유의하여 풀어야 한다. 입력 for _ in range(int(input())): height, width = map(int, input().split()) floor = [list(input()) for _ in range(height)] keys = set(input()) visited = [[0 for _ in row] for row in floor] documents = 0 doors = {} # 열리지 않은 문 리스트 for door in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": doors....

February 5, 2023 · 3 min · 607 words · ralpioxxcs

GStreamer 사용하기 [2] - 어플리케이션 만들기

gst-launch를 사용하여 커맨드라인으로 원하는 파이프라인을 실행시킬 수도 있지만, GStreamer API 구성 요소를 사용하여 명령줄로 구현했던 파이프라인의 기능을 똑같이 동작시키는 하나의 응용 어플리케이션 형태로도 만들수 있다. GStreamer는 기본적으로 GLib의 GObject를 기반으로 설계되었기 때문에 해당 개념을 어느정도 이해하고 있어야 GStreamer를 능숙하게 다룰 수 있지만, 이는 단순히 기능을 사용하는것이 스케줄링, 동기화등의 고급 기능 혹은 플러그인을 제작하려고 할 때 중요하게 사용되는 개념이므로 간단한 예제를 이해하는데는 크게 중요하지 않다. color bars 테스트 영상을 띄우기 위해 어플리케이션내에서 2가지 방법으로 파이프라인을 구축해볼것이다...

November 2, 2022 · 6 min · 1119 words · ralpioxxcs

GStreamer 사용하기 [1] - 파이프라인 구성요소 및 개념

최근에 멀티미디어 관련 프로젝트를 진행하면서 GStreamer를 사용할 일이 생겼다. 간단하게 사용하기에는 알아야할 것들이나 개념들이 꽤나 많기 때문에 GStreamer를 사용하면서 정리한 내용들 및 추가적으로 학습한 내용들을 포스팅할 예정이다. GStreamer gstreamer overview Gstreamer는 스트리밍 미디어 어플리케이션 생성을 위한 통합 미디어 프레임워크로, 수많은 모듈형식으로 구성된 멀티미디어 프레임워크이다. 주로 오디오, 비디오 스트림등 다양한 데이터 프로토콜의 흐름을 설계할 수 있도록 도와준다. 예를들어 어떤 영상 파일을 rtsp클라이언트를(ex. VLC)이용해서 접근할 수 있도록 rtp 데이터 스트림을 생성하는 rtsp서버를 간단하게 구현할 수 있게 해준다....

November 2, 2022 · 4 min · 711 words · ralpioxxcs

aarch64 크로스 컴파일 환경 구성하기

애플에서 M1 프로세서를 출시하고 나서부터 ARM 아키텍처가 각광받고 있지만, 보통 ARM 아키텍처를 사용하는 환경은 저전력, 제한된 리소스를 사용하기 때문에 쾌적한 빌드환경을 갖추기가 어렵다. 보통은 이러한 제한때문에 대부분의 개발 작업을 x86환경에서 크로스 컴파일을 사용해 타겟 아키텍처에서 실행가능한 형태로 빌드한다. 회사에서 raspberry PI 혹은 nvidia jetson 보드를 이용해 신제품을 프로토타이핑 하는 경우가 잦았는데, 타겟 보드에서 테스트를 하려고 할 때마다 빌드 시간이 너무 느려 답답한 경우가 많았다. 그래서 크로스 컴파일 환경을 한번 갖춰놓으니 빌드 시간도 단축시킬 수 있었고, CI 서버에도 크로스 컴파일 자동화를 적용하여 전체적인 개발 속도를 높일 수 있었다....

July 6, 2022 · 3 min · 478 words · ralpioxxcs