전체 288

[백준] 5567 결혼식

너비 우선 탐색을 살짝 응용하면 되는 문제이다. 문제를 보면 노드의 수 (동기의 수), 주어지는 노드간 연결관계의 수 (리스트의 길이), 노드간 연결관계 (친구 관계) 가 주어진다. 이를 이용하여 문제를 풀 수 있다. 너비 우선 탐색 문제를 풀기 위해서는 너비 우선 탐색에 관한 알고리즘의 이해가 필요하다. 2중 반복문을 이용해서 풀 수도 있으나, 너비 우선 탐색을 사용하는 것이 다른 문제에 응용하기 좋다. 너비 우선 탐색은 그래프 탐색에 사용된다. 목표 지점에 도달하기 위해서 경로를 탐색하되, 출발점에서 같은 거리의 노드를 탐색한다. 여기에는 큐가 필이 사용된다. bfs의 기본 원리는 다음과 같다. 시작 노드를 queue에 저장한 후 bfs 탐색을 실행한다. 큐에 있는 노드를 pop 한 후 해당 노드에 ..

[백준] 9663 N-Queen

알고리즘 문제 중에서는 매우 유명한 N-Queen 문제다. 문제는 다음과 같다. 크기가 NxN인 체스판에 N개의 퀸을 둔다. 퀸은 서로 공격할 수 없는 상태여야 한다. 이때, 퀸을 배치할 수 있는 경우의 수를 출력하시오. 이 문제는 백트래킹을 이용하여 풀 수 있는 문제이다. 백트래킹 알고리즘은 초보자에겐 어려울 수 있으나, 필수적으로 알아야 할 알고리즘이다. 백트래킹 알고리즘을 간단히 정리하면 "가능성이 없는 경우에 대해선 탐색을 하지 않는다" 이다. 즉, 모든 경우에 대하여 탐색을 하지 않고 가능성이 있는 경우에 대해서만 탐색을 하여 답을 찾는것이 이 문제의 목표이다. 이러한 생각으로 문제를 다시 풀어보자. 나는 체스를 모르기 때문에, 퀸이 공격할 수 있는 경우부터 알아보자. 퀸은 가로 세로 대각선 모..

vim 에디터 간단히 사용하기

리눅스 쉘은 그래픽 인터페이스가 아닌, 텍스트로만 이루어져 있다. 리눅스를 사용하게 되면은 그래픽 유저 인터페이스(Graphic User Interface) 보다는 텍스트 유저 인터페이스(Text User Interface)를 더 많이 보게 될 것이다. 여기서 텍스트 파일을 수정하기 위한 에디터는 주로 2가지가 있다. Nano 하고 Vim 이 있다. 전자는 간단한 기능만 있고, 후자는 다양한 기능 및 추가 기능이 있다. Vim은 알아두면 좋은 기능들이 많지만, 모든 기능을 알기는 시간이 좀 걸린다. 주로 쓰는 기능들을 익혀서 빨리 사용해 보자. vim의 구조 텍스트 편집을 할 때 크게 3가지 모드로 구분된다. 1. 입력 모드 vim을 킨 후 i를 누르면 현재 커서부터 입력이 가능해진다. 2. 명령 모드 ..

줄넘김 문자 endl , \n 차이

줄넘김 문자를 출력할 때 c++에서는 endl 과 \n 의 두 가지 선택지가 있다. 둘 중 무엇이 더 빨리 출력이 될까? 정답은 \n이다. 왜냐하면 std 내부에 정의되어 있는 endl을 보면 다음과 같다. 1 2 3 4 5 6 basic_ostream& __CLRCALL_OR_CDECL endl( basic_ostream& _Ostr) { // insert newline and flush stream _Ostr.put(_Ostr.widen('\n')); _Ostr.flush(); return _Ostr; } Colored by Color Scripter cs 마지막에 보면 flush() 함수가 있다. 간단히 말하면, 버퍼를 비우는 동작이 endl 안에 포함되어 있기 때문에, 시간이 느린 것이다. 알고리..

gcc 를 이용해 c언어 간단히 컴파일하기

C언어를 처음 접하게 되면 대부분 윈도우의 비주얼 스튜디오 또는 VScode로 시작할 것이다. 여기서는 컴파일 버튼이 기본적으로 탑재되어 있어 편하게 코드 관리와 컴파일을 할 수가 있다. 이와 비슷하게 리눅스 터미널에서도 컴파일을 할 수가 있다. gcc 라는 프로그램인데, 예전부터 계속 사용되었던 프로그램이다. 빠르게 실행파일 만들기 프로그램 컴파일의 과정을 정말로 간략히 설명하면, .c로 끝나는 파일들을 .o로 만들어 목적 파일들을 만든다. 마지막으로 .o 파일들(라이브러리 파일이 있으면 그들도 포함) 을 실행 파일로 만들게 된다. c 파일이 한개이고, 빠르게 결과를 보고 싶을 때는 다음과 같은 명령어를 작성한다. gcc "c파일이름" / gcc -o "실행파일이름" "c파일이름" 왼쪽 명령어를 입력하..

42서울 4기 1차 피신 과정 종료

강남 서초구에서 한달 동안 코딩의 수영장에 빠져 있었다. 생각하기에 따라 깊고 어두울 수도, 깊지 않고 밝을 수도 있는 수영장에 있다가 집으로 오니, 힘이 쫙 빠진다. 한달 동안 무엇을 했을까 생각해 보는 시간을 가지고자 한다. 기대되는 첫째주 첫째주에는 부랴부랴 고시원을 구했다. 서울에서 사는 사람들은 집에서 다닐 수 있겠지만, 나같은 지방 사람들은 무조건 잘 곳이 필요하다. 자취방은 어림도 없고, 잠만 잘 생각으로 고시원을 빠르게 구했다. 강남역 근처로 구했어야 했는데...조금 거리가 있는 신사역 근처로 구했다. 클러스터에 도착하면 이것저것 절차를 진행한다. 9시 42분~12시까지 입실인데 나는 10시 조금 넘어서 도착했다. 도착하면 카뎃분들이 반갑게 인사해주신다. 왠지 모르게 기분이 좋아졌다. 그분..

잡다한 이야기 2021.03.21

Windows 10 에서 리눅스 사용하기 (WSL, 리눅스 윈도우 하위시스템)

PC의 운영체제는 거의 3개로 나누어진다. Microsoft 사의 Windows, Apple의 Mac OS, 그리고 리눅스이다. Mac OS 는 애플의 제품에서만 정식으로 지원되니, 하드웨어를 본인의 입맛에 맞게 구성한 후 사용할 수 있는 운영체제는 Windows 와 리눅스라고 할 수 있다. 대부분의 경우에는 한 개의 컴퓨터에 한 개의 운영체제를사용한다. 하지만 윈도우 컴퓨터에서도 리눅스를 듀얼부팅 없이 바로 사용이 가능하게 되어 있다. wsl이라는 기능을 이용하면 복잡한 과정 없이 바로 리눅스 실행이 가능하다. WSL 설치하기 OS : 윈도우10 최신버전, 64비트 1. Windows 기능 켜기/끄기 -> Linux용 Windows 하위 시스템 체크 기본적으로 켜져 있는 기능은 아니기 때문에 이 기능을..

main 함수에 입력 변수 설정하기

C언어를 이용해 코드를 짜다 보면은 특정 기능을 함수 또는 클래스로 구분하여 작성을 하게 된다. 함수는 입력 변수가 있기도 하고, 없기도 한다. main 함수도 똑같은 함수인데, 입력 변수가 있을까? 답은 "있다" 이다. 이에 대한 작성법을 알아보자. main 함수의 입력변수 main 함수의 레퍼런스를 확인해 보자. en.cppreference.com/w/cpp/language/main_function Main function - cppreference.com A program shall contain a global function named main, which is the designated start of the program. It shall have one of the following for..

42서울 지원 및 온라인 예선 합격

작년 한해는 개인적으로 다사다난했던 해라고 생각한다. 결과적으로는 전반적으로 나에게 마이너스가 되었다고 생각하지만, 이것을 발판 삼아서 나의 발전을 도모해야 겠다고 다짐했다. 이번에 휴학을 하면서 방학때 무엇을 해 볼까 고민하던 중, 42서울 이라는 프로그램을 알게 되었다. 작년에 여러가지 활동을 하면서 코딩에 관한 관심이 매우 높아졌고, 전공에 관한 진지한 고민까지 하게 되었다. 그래서 올해 휴식을 취할 겸 코딩에 관한 기초 실력을 쌓아서 나중에 무엇인가를 할 때 해결을 어떻게 해야 하는지에 대한 방법을 체계적으로 구체화 할 수 있는 능력을 기르고 싶어서 여기 지원하게 되었다. 42서울은 무엇일까? 42서울은 과기부에서 설립한 소프트웨어 인재 양성 관이다. 프랑스의 에꼴42에서 진행 방식을 따 왔으며,..

잡다한 이야기 2021.02.04

오늘의 무료 앱 (21.02.03)

오늘의 무료 앱 소개 시작하겠습니다. 안드로이드 S 전설 싸움S전설 싸움: 섀도우 워 오프라인 전투 게임 - 스틱맨 레전드 간단한 RPG 게임입니다. play.google.com/store/apps/details?id=com.zitga.ninja.stickman.legends.shadow.wars S전설 싸움: 섀도우 워 오프라인 전투 게임 - 스틱맨 레전드 - Google Play 앱 스틱맨 레전드: 전쟁의 그림자는 롤플레잉 게임(RPG)과 플레이어 간 결투 게임(PvP)의 탁월한 결합물인 오프라인 및 온라인 전투 게임입니다. 인터넷 걱정을 하실 필요 없이, 언제 어디서나 스틱맨 play.google.com Alpha Backup Pro 간단한 스마트폰 백업 어플입니다. 오프라인 기기에서 장점을 잘 발..