[Algorithm] C++ 백준 2252번 : 줄 세우기
백준 2252번 “줄 세우기” 문제는 N명의 학생을 키 순서대로 줄을 세우는 것이다. 일부 학생들의 키 비교 결과가 주어지며, 이를 바탕으로 모든 학생이 키 순서대로 줄을 서도록 정렬해야 한다. 입력으로 학생 수 N과 비교 횟수 M이 주어지고, M개의 키 비교 결과가 주어진다. 이...
백준 2252번 “줄 세우기” 문제는 N명의 학생을 키 순서대로 줄을 세우는 것이다. 일부 학생들의 키 비교 결과가 주어지며, 이를 바탕으로 모든 학생이 키 순서대로 줄을 서도록 정렬해야 한다. 입력으로 학생 수 N과 비교 횟수 M이 주어지고, M개의 키 비교 결과가 주어진다. 이...
“벽 부수고 이동하기” 문제는 N×M 크기의 2차원 배열로 주어진 맵에서 (1,1)에서 (N,M)까지 이동하는 최단 경로를 찾는 것이다. 이동은 상하좌우로 가능하며, 벽(1)을 최대 한 개까지 부술 수 있다. BFS를 활용하여 벽을 부순 상태와 부수지 않은 상태를 구분하여 최단 경...
ACM Craft 문제는 여러 건물을 짓기 위해 주어진 순서와 시간을 고려하여 특정 건물을 완성하는 데 필요한 최소 시간을 계산하는 문제이다. 각 건물은 다른 건물들이 완성된 후에야 지을 수 있으며, 주어진 건설 순서 규칙에 따라 건물들 간의 의존 관계가 형성된다. 목표는 주어진 ...
BOJ 1067 문제는 주어진 배열을 왼쪽 또는 오른쪽으로 특정 횟수만큼 회전시키는 문제이다. 입력으로 배열의 길이 (N), 배열의 원소들, 회전 횟수 (K), 회전 방향 (D)가 주어지며, (D)가 ‘L’이면 왼쪽으로, ‘R’이면 오른쪽으로 배열을 (K)번 회전시킨 결과를 출력한...
『듄』은 프랭크 허버트가 쓴 동명의 소설을 바탕으로 한 공상과학 영화이다. 이 영화는 복잡한 정치, 종교, 환경적 메시지를 포함한 광대한 우주를 배경으로 하며, 아트레이데스 가문의 상속자인 폴 아트레이데스의 여정을 중심으로 전개된다. 영화의 스토리는 폴이 자신의 정체성, 운명, 그...
Car Masters: Rust to Riches”는 넷플릭스에서 방영되는 미국의 리얼리티 텔레비전 시리즈이다. 이 프로그램은 고담 개러지 팀이 주도하는데, 이들은 영화 스튜디오와 텔레비전 쇼를 위한 다양한 소품을 제작해 왔다. 주요 인물로는 마크 타울, 토니 퀴노네스, 콘스탄스 ...
“Ghosted”는 2023년에 개봉한 미국의 로맨틱 액션 모험 코미디 영화다. 감독은 덱스터 플레처이며, 주연 배우로는 크리스 에반스와 아나 데 아르마스가 출연한다. 이 영화의 줄거리는 콜(크리스 에반스)이 신비로운 새디(아나 데 아르마스)에게 반하면서 시작되는데, 새디는 사실 ...
영화 “The Burial”은 흥미로운 배경과 강렬한 스토리라인을 가진 작품입니다. 이 영화의 주인공은 제레미아 오’키프(Jeremiah O’Keefe)로, 그는 미시시피 남부에서 여러 장례식장을 소유하고 있으며 장례 보험 브로커로도 일하고 있습니다【10†source】. 1995년...
파일 시스템 분야에서 Btrfs는 Unix/Linux 시스템을 위한 강력하고 다재다능한 옵션으로 두각을 나타내고 있습니다. 오라클, 후지쯔, 레드햇의 전문가 팀이 개발한 Btrfs는 다양한 애플리케이션에 매력적인 선택이 될 수 있는 다양한 기능을 제공합니다. 데이터 무결성 및 효율...
소프트웨어 엔지니어링에서 디자인 패턴은 유연하고 유지 관리 가능한 코드를 만드는 데 중요한 역할을 합니다. 이러한 디자인 패턴 중 하나가 추상 팩토리 패턴입니다. 이 패턴을 사용하면 구체적인 클래스를 지정하지 않고도 관련 객체의 제품군을 생성할 수 있습니다. 이 패턴은 공통 주제를...
소프트웨어 개발 분야에서는 자동화가 핵심입니다. 반복 작업을 예약하는 기능은 시간과 노력을 절약하여 개발자가 업무의 더 중요한 측면에 집중할 수 있도록 해줍니다. 이러한 자동화를 가능하게 하는 강력한 도구 중 하나는 Linux Crontab입니다.
소프트웨어 개발 분야에서 복잡한 객체를 생성하는 것은 종종 어려운 작업일 수 있습니다. 선택적 속성이 많은 객체는 구성 프로세스가 번거롭고 오류가 발생하기 쉽습니다. 이때 빌더 패턴이 도움이 됩니다.
디자인 패턴은 소프트웨어 설계에서 발생하는 일반적인 문제에 대한 재사용 가능한 솔루션입니다. 디자인 패턴은 이러한 문제를 구조적이고 효율적인 방식으로 해결할 수 있는 방법을 제공합니다. 이 블로그 게시물에서는 디자인 패턴의 세계와 소프트웨어 개발에서 디자인 패턴의 중요성, 다양한 ...
SOLID 원칙은 소프트웨어 커뮤니티에서 밥 아저씨라는 애칭으로 잘 알려진 Robert C. Martin에 의해 소개되었습니다. 그의 연구는 소프트웨어 업계에 큰 영향을 미쳤으며, 이러한 원칙은 많은 개발자가 소프트웨어를 설계하고 제작할 때 초석이 되었습니다. SOLID 원칙은 단...
“API 게이트웨이”와 “로드 밸런서”는 언뜻 보기에는 비슷한 기능을 수행하는 것처럼 보일 수 있습니다. 둘 다 네트워크 트래픽을 관리하고 요청이 효율적으로 처리되도록 하는 데 관여합니다. 그러나 이들은 매우 다른 용도로 사용되며 네트워크 아키텍처의 서로 다른 계층에서 작동합니다....
끊임없이 진화하는 소프트웨어 개발 환경에서 애플리케이션 아키텍처는 상당한 변화를 겪어왔습니다. 애플리케이션의 모든 로직이 단일 코드베이스에 포함되어 있던 모놀리식 아키텍처의 초창기부터 마이크로서비스 시대로 전환되었습니다. 이러한 변화는 보다 확장 가능하고 유지 관리가 용이한 시스템...
“바이센테니얼 맨(Bicentennial Man)”은 1999년에 개봉한 SF 드라마 영화로, 로빈 윌리엄스가 주연을 맡았습니다. 이 영화는 아이작 아시모프의 단편소설 “The Bicentennial Man”과 “The Positronic Man”을 바탕으로 만들어졌습니다.
컴퓨팅 세계에서는 중앙 처리 장치(CPU)와 그래픽 처리 장치(GPU)라는 두 가지 핵심 구성 요소가 시스템 성능에 중요한 역할을 합니다. 비슷해 보일 수 있지만, 이 둘은 고유한 기능과 성능을 가지고 있습니다.
인공지능(AI)은 현대 기술의 초석이 되어 의료에서 금융, 교육에서 엔터테인먼트에 이르기까지 무수히 많은 분야에 영향을 미치고 있습니다. 공상 과학 소설의 소재였던 혁신과 효율성의 기회를 제공하면서 세상을 혁신할 수 있는 잠재력은 엄청납니다. 그러나 다른 강력한 도구와 마찬가지로 ...
동적 로딩(Dynamic loading)은 런타임에 프로그램에서 코드 모듈을 로드하고 언로드할 수 있는 C++의 강력한 기능입니다. 이 기능은 공유 라이브러리의 동적 로딩을 가능하게 하는 함수 집합인 dlopen API를 통해 제공됩니다.
인공지능(AI)은 기술 업계의 판도를 바꾸어 왔으며, OpenAI의 GPT-4도 예외는 아닙니다. 그러나 최근 해커 뉴스 플랫폼에서 이 AI 모델을 둘러싼 몇 가지 우려와 논쟁에 대한 논의가 있었습니다. 이 블로그 게시물은 이러한 논의를 자세히 살펴보고 당면한 문제에 대한 포괄적인...
안녕하세요, 여러분! 오늘은 Lyft와 OpenStreetMap에 대한 흥미로운 주제를 다루려고 합니다. Lyft가 자체 지도 시스템을 구축하려는 이유와 그 방법, 그리고 이것이 어떻게 회사의 미래에 영향을 미칠 것인지에 대해 알아보겠습니다. 또한, 이 모든 것이 가능하게 한 Op...
dlopen을 사용하는 이유는 프로그램이 실행되는 동안 동적으로 라이브러리를 로드하거나 언로드하고 함수를 호출할 수 있기 때문입니다. 또한, 라이브러리를 동적으로 로딩하면 그 라이브러리의 코드를 전체 프로그램의 코드에 미리 포함시키지 않고도 필요할 때마다 로드할 수 있기 때문입니다.
Nut.js는 Node.js를 사용하는 데스크톱 오토메이션 프레임워크이다. 해당 프레임워크는 JavaScript나 TypeScript으로 마우스나 키보드를 컨트롤 할 수 있도록 해준다.
심링크(symlink)는 파일 시스템에서 사용되는 특별한 파일 유형입니다. 심링크는 파일이나 디렉터리에 대한 다른 이름을 제공합니다. 심링크는 실제 파일 또는 디렉터리를 가리키는 링크로, 실제 파일을 복사하는 것이 아니라 심링크를 생성하여 그것을 가리킵니다.
소프트웨어에 문제가 발생했을때, 보통은 재부팅이나 재실행을 하는 경우에 문제가 해결되는 경우가 많다. 그러나 서버에 접근하기 힘들거나 반복적으로 재실행을 하는 경우에는 스크립트를 사용하면 편하다. 본 글에서는 Plex media server를 스크립트로 재 실행 하는 방법에 대해서...
Rust를 사용하여 동시성(Concurrency)을 가진 프로그램을 작성할 때 도움이 되는 내용을 담고 있다.
온라인에서 Python 학습할 수 있는 도구를 소개한다. 기본적인 조건문, 반복문, 자료 구조를 연습해 볼 수 있다.
AI(Artificial Intelligence)와 소통을 위한 오픈소스 강의
Welcome to Comprehensive Rust
CancellationTokenSource 이란
Git 프로젝트의 커밋 히스토리를 기반으로 비디오 애미메이션(.mp4)를 생성하여 Git 프로젝트를 설명하는 방법에 대해서 알아 본다.
아는 사람만 알고 있다는 숨어있는(?) github.dev 서비스를 알고 있으신가요?
태블릿이나 스마트폰에서 윈도우를 사용해야 하는 경우가 종종 있다. 예를 들어 어떤 작업을 해야 하는데 모바일 기기에서는 지원하는 기능이 아니라고 해보자. 그럴 때는 아래의 그림에서 보는 것처럼 다양한 원격 프로그램을 사용해서 모바일 기기에서 원도우로 원격으로 접속해서 처리 할 수 ...
토렌트를 사용하다 보면 RSS를 사용해서 자동으로 다운로드할 수 있는 기능이 있다. 여러 클라이언트가 있지만 그중에서도 qBittorrent에 대해서 알아보고 자동으로 다운로드할 방법에 대해서 알아본다.
마크다운으로 계단식 타임라인을 만들 수 있는 웹서비스를 소개 한다.
가끔 같은 명령어를 주기적으로 실행해야 할 때가 있다. 예를 들어 시스템의 자원 사용량을 모니터링하거나, 특정 명령어를 반복적으로 입력해서 결과를 확인해야 할 때, 사용할 수 있는 방법을 알아보자.
리눅스에는 다양한 목적을 가지고 있는 가상 파일 시스템을 가지고 있다. 파일 시스템을 사용하든 간에 관계없이 프로그램을 작성할 땐 open, read, write, close와 같은 시스템 호출을 사용해서 이 모든 걸 처리할 수 있다. 지금은 이게 모두 당연하지만, 예전에는 그렇지...
워드프레스에 조인한 CC Search를 리브랜딩한 검색엔진이다. 무료로 사용가능한 이미지/사진, 오디오(음악,팟캐스트,샘플링 등) 등의 콘텐츠를 검색할 수 있다.
가민에서 제공하는 워크아웃의 모든 운동 목록을 정리한것이다.
새로운 소식을 접하기 위해서는 어떤 방법이 있는지 생각해 보자. 먼저 떠오르는 방법은 뉴스일 것이다. 아니면 포탈 페이지에서 볼 수 있는 광고들? 단톡방에서 공유되는 링크들? 여러 방법을 통해서 새로운 소식을 접하고 있는 것을 알 수 있을 것이다.
리눅스를 사용할 때 top명령어를 사용해서 CPU를 모니터링 해본적이 있는가? 너무 보잘것 없는 UI에 실망한적이 있는가? 다른 리소스의 사용량도 확인 해 보고 싶은 생각은 없었는가? 본 글에서는 PC의 자원은 한 화면헤서 확인 할 수 있는 btop++에 개해서 소개 한다.
Source Generators를 사용하면 C# 개발자가 컴파일되는 사용자 코드를 검사(Inspect)할 수 있다. Source Generators는 컴파일 과정중에 새 C# 코드를 추가 할 수 있다. 이러한 방식으로 컴파일 과정둥에 동작하는 코드가 있다면, 해당 코드는 프로그램을...
C/C++언어를 사용하다 보면 동적으로 할당한 자원을 해제 하지 않이서 문제가 발생하는 경우가 많다. 이럴때 unique_ptr을 사용하면 함수에서 빠져나갈때 자원을 자동으로 해제 할 수 있도록 만들수 있다.
cin, cout 을 사용할 경우 입력은 문제가 없지만 출력의 경우 약간 복잡하다. 두 가지를 알아야 소수점 자리를 고정하여 출력 할 수 있다.
한 메서드 안의 로컬 변수들은 그 메서드가 끝날 때 해제되게 된다. Value 타입의 변수는 함수 리턴과 동시에 스택에서 해제되고, Reference 타입의 변수는 GC (Garbage Collector)에 의해 힙상에서 자동 해제되게 된다. 프로그래머들이 흔히 범하는 실수중의 하...
새롭게 선보인 .NET 7 Preview 2에는 아래와 같은 기능이 소개 되었다.
원문 : Windows Defender is enough, if you harden it
There’s No Such Thing as Clean Code을 번역하고 추가적인 내용을 적은 글입니다.
원문 : CSS 역사로 알아보는 CSS가 어려워진 이유
페어 프로그래밍은 애자일 개발 방법론 중의 하나로 하나의 개발 가능한 PC 에서 두 명의 개발자가 함께 작업하는 것을 말합니다. 네비게이터(navigator)가 전략을 제시하고 드라이버(driver)가 실제 코드를 작성하며, 이 열할을 각자 번갈아가며 수행합니다.
원문 : Lessons learned from the smartest Software Engineer I’ve met
자바스크립트에서 주석은 html 주석과 다른 형태를 띠고 있다.
아래의 그림처럼 개발 블로그에서는 코드 복사를 위한 Copy 버튼이 있는 것을 종종 확인 할 수 있다. Java Script를 이용하여 콘텐츠의 내용을 바꾸지 않고 Copy 버튼을 삽입 할 수 있는 방법에 대해서 알아본다.
수학자들이 사용할 것만 같은 화려한 수식이 아니더라도 분수나 제곱근과 같이 수식으로 표현해야 좋은 내용이 있다. 본 게시글에서는 여러분의 웹 페이지에 MathJax를 사용하여 수식을 표시하는 방법에 대해서 알아볼 것이다.
기본 데이터 형식을 다른 데이터 형식으로 변환하는 방법에 대해서 알아본다.
Jekyll로 구성된 웹페이지는 Markdown과 비슷한 Kramdown을 사용하는 경우가 많다. 기본적으로 Kramdown문법이 Markdown과 같아서 글을 작성하는 데 어려움이 없고 Markdown보다 더 많은 기능을 제공한다. 코드를 표시할 때 ```을 사용하여 표시한다. ...
Minimal Mistakes Jekyll theme을 사용하여 Gibhub 페이지를 구성한 경우에는 최대 너비가 지정되어 있어 일정 크기 이상으로 넓어지지 않는다. Sample Post에서 Minimal Mistakes Jekyll theme가 어떻게 동작하는지 확인 할 수 있다...
이미지를 사용하여 포스팅하는 경우에 이미지에 캡션을 추가하고 싶은 욕구가 막 생길 때가 있다. 이럴 때 사용할 수 있는 방법을 알아보도록 한다. Jekyll을 사용하여 웹사이트를 구성한 경우에는 크게 Markdown만을 사용하여 캡션을 추가하도록 하거나 Jekyll의 기능을 사용하...
std::string::find를 사용하여 문자열에서 특정 문자열이 있는지 찾는 방법
모든 개발자에 있어서 코드에 대한 기본적인 결정 사항 중 하나는 클래스(참조 형식)를 사용해서 표현할 것인지 아니면 구조체(값 형식)를 사용해서 표현할 것인지를 결정하는 것이다. 클래스 및 구조체 동작의 차이점을 이해하는 것은 이를 선택하는 데 매우 중요하다.
SW 개발자가 가슴에 품고 있어야 하는 기본적인 마음가짐에 대해서 다루어 본다.
RPM을 빌드 할 때 사용하는 Spec 파일 내에서 주석과 매크로를 동시에 사용할 때 주의해야 한다.
Custom Signal Handler를 만들어서 사용하는 방법에 대해서 알아본다.
다른 위치에 있는 dll을 pligin으로 사용하려고 할때 dll을 못 찾는 이슈가 발생 할 수 있다.
온라인에서 무료로 UML을 그리는 툴 중에서 이라는 사이트가 있다. 해당 사이트에서 다양한 기능을 제공하고 있다. 본 글에서는 GitHub Page에서 PlantUML을 사용 할 수 있는 방법을 알아본다.
문자열에서 내가 원하는것을 검색하고 변경하고 삭제하는 작업을 하는데 있어서 Regex는 매우 좋은 방법이다. 본 글에서는 Regex에서 검색된 결과를 재사용하는 방법에 대해서 알아 본다.
Wait 커맨드는 프로세스의 실행 종료를 대기하게 한다. 특정 프로세스를 대히하게 할 수도 있고, 전체 프로세스의 종료를 대기 할 수도 있다.
리눅스에서 gbs로 개발을 하다보면 gbsroot가 제대로 unmount가 되지 않아서 문제가 발생할 수 있다. 이러한 경우에 해결하는 방법을 알아 보자.
bash shell script 에서 file path 에서 확장자나 Path 를 제거하고 파일명만 뽑아내는 방법(bash shell 에서만 동작함)
전처리기인 Define 문을 namespace로 다른 코드와 분리 하여 사용하고 싶을 수가 있다. 하지만 define문은 namespace로 경계를 나눌 수 없다. 아래의 예시를 보고 왜 경계를 나눌 수 없는지 생각해 보자.
숫자를 이용해서 여러 명령어를 실행 할 수 있는 셸스크립트
Reflection이 느린 이유
리눅스의 실행 프로세스의 환경변수는 /proc 파일시스템을 통해서 알 수 있다. 예를 들어 pid 1000번의 환경변수는
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/preprocessor-directives
```bash dotnet build –no-restore p:DefineConstants=TEST Sample.sln /usr/share/dotnet-build-tools/sdk/dotnet build –no-restore p:DefineConstants=TEST Sampl...
대부분의 개발자는 자기의 경험이나 생각에 따라서 코드를 작성 하는 경우가 많다. 하나의 예시로는 C++개발에 익숙한 개발자들이 C#으로 개발을 시작할때 Class Finalizer에서 자원을 관리 하는 경우이다.
CORSAIR 커세어 K63 WIRELESS 블루투스키보드를 초기화 하는 방법에 대해서 설명한다.
하나의 윈도우 PC를 여러 사람이 사용하는 경우에는 사용자를 추가하는것이 좋다. 사용자끼리 설치된 프로그램은 공유가 되지만 정보들은 구분이 되어 있어 다른 사용자가 내 정보를 보지못하도록 할 수 있다.
GithubDesktop 2.6.4 이전의 버전들은 commit과 push가 매우 느려서 사용하기 풀편했었다. 그러나 최근에 업데이트된 2.7.1 버전은 매우 빼른 속도로 작업이 이루어 지고 있다. 그래서 CMD나 Shell 기반의 GitClient를 사용하지 않고도 윈도우기반의 ...
Git에서 수정한 내용들을 되돌리고 싶을때 사용할 수 있는 방법이다.
포스팅만을 이용해서 글을 작성하는것은 블로거로써 충분한 일이지만 종류별로 세분화 할 수 있는 글을 모아두기에는 적절하지 않은것 같아서 아래와 같이 콜렉션 별로 글을 볼 수 있도록 추가 하였다.
RDP Wrapper는 윈도우 원격을 여러명이서 동시에 사용할 수 있도록 해주는 좋은 프로그램이다. 하지만 그냥 설치 했을때는 not supported 문제가 발생하여 사용을 할 수 없는 경우가 있다. 본 게시물에서는 Win 10 Pro 20H2에서 not supported문제를 ...
Method 1: 오래된 파일 부터 보이기 This is useful if you want to check and erase old files. Check the old files by putting the -r option on top. 1 2 3 4 5 6 7 8 9 10 #...
Queueing
PIP 패키지 인스톨 Proxy 환경에서 사용하기
윈도우7에서 응용프로그램을 시키는 기본적인 방법
Use shell command If the Ubuntu Server installer has set your server to use DHCP, you will want to change it to a static IP address so that people can actual...
Exit Code Number Meaning Example Comments
The exit command terminates a script, just as in a C program. It can also return a value, which is available to the script’s parent process.
Extract directory path Use sed sed (stream editor) is a Unix utility that parses and transforms text ~~~ shell function extract_directory_path() { echo “...
Tmux 터미널 세션 안에서 여러 별도의 터미널 세션에 액세스할 수 있도록 여러 가상 콘솔을 다중화 Tmux 관련 유틸 tmuxifier Window와 Session의 셋팅을 미리 지정하고 불러와서 사용 tmuxifier
라테판다에 이미지 설치 하는 방법
도커에서 컨테이너를 사용하는 방법에 대해서 알아 본다.