본문 바로가기

전체 글

(28)
[Project] 지뢰 찾기 게임 (React) Play: https://nbsp1221.github.io/react-minesweeper-game React 공부용으로 만든 지뢰 찾기 게임입니다. 지금까지 웹 프로그래밍은 해온 게 많아서 HTML, CSS, JavaScript 같은 언어에는 많이 익숙했지만, 지금까지 써본 라이브러리는 고작 jQuery 말곤 없었기에 적응하는데 꽤나 고생했습니다. 더구나 React는 라이브러리라고 하기에는 뭔가... 라이브러리보다 프레임워크인 듯한 느낌이 강했습니다. 웹인데 빌드 개념이 등장하고 웹팩(Webpack) 등등 이상한 게 마구 등장하니 어렵게 느껴진 것 같네요. 하지만 괜히 인기 있는 라이브러리가 아니겠죠? 처음 배웠을 땐 도대체 이걸 왜 하나 싶었지만, 막상 프로젝트를 진행해보니 확실히 편한 부분들이 많은..
[Linux] SSH 접속 포트 변경하는 방법 기본적으로 SSH 접속 포트는 22번으로 설정되어 있습니다. 하지만 기본 포트를 그대로 사용하게 되면 외부의 공격에 쉽게 노출될 수 있기 때문에 Fail2ban 같은 프로그램을 이용하거나 아예 다른 포트로 바꿔주는 것이 좋습니다. 어려운 비밀번호를 설정해서 해킹 당할 걱정이 없겠거니 하고 그냥 놔두시는 경우도 있는데, 해킹은 그렇다 쳐도 트래픽이 문제입니다. 보통 봇을 이용해서 무차별 대입 공격을 하는 경우가 많기 때문에 잘못하다간 하루 만에 트래픽이 30GB씩 낭비되는 모습을 보실 수 있습니다... (제가 그랬거든요. 😂) 저는 처음에 Fail2ban을 이용해 로그인에 실패한 아이피는 차단되도록 했는데 공격이 워낙 많아서 감당이 안 되더라고요. 그래서 아예 포트 번호를 바꿔버리는 게 낫겠다는 생각이 들..
[Baekjoon] 18111 - 마인크래프트 (C++) https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 땅을 파거나 집을 지을 수 있는 게임이다. 목재를 충분히 모은 lvalue는 집을 짓기로 하였다. 하지만 고르지 않은 땅에는 집을 지을 수 없기 때문에 땅의 높이를 모두 동일하게 만드는 ‘땅 고르기’ 작업을 해야 한다. lvalue는 세로 N, 가로 M 크기의 집터를 www.acmicpc.net 블록을 설치하거나 제거해서 땅을 평평하게 만들어 줘야 합니다. 블록을 설치할 때는 1초, 제거할 때는 2초가 걸립니다. 땅의 크기..
[Baekjoon] 1966 - 프린터 큐 (C++) https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 www.acmicpc.net 중요도가 높은 문서를 먼저 뽑고, 중요도가 낮은 문서는 맨 뒤로 밀려나는 상황에 특정 문서가 몇 번째로 인쇄되는지 구하는 문제입니다. ..
[Bash] 리눅스 작업 관리자 리눅스 수업 시간에 숙제로 만든 프로그램입니다. 사용자별로 현재 실행되고 있는 프로세스 목록과 정보를 보여줍니다. 방향키로 선택할 수 있고, 엔터로 프로세스를 종료할 수 있습니다. Source Code: https://github.com/nbsp1221/linux-task-manager nbsp1221/linux-task-manager Task Manager in Linux. Contribute to nbsp1221/linux-task-manager development by creating an account on GitHub. github.com
[Baekjoon] 11866 - 요세푸스 문제 0 (C++) https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 처음엔 문제 이해가 잘 안 갔는데 그냥 처음부터 K번째 사람을 제거하고 다시 그 위치에서 K번째 사람을 제거하고... 계속 반복만 하면 되는 것 같더라고요. 중간의 데이터를 제거해야 하는 상황이라 자료구조 중 하나인 연결 리스트(linked list)를 사용하면 될 것 같다는 생각이 들었습니다. 연결 리스트는 C++에서 STL로 제공하는 list를 사용했습니다. 데이터 제거와 연결 리스트의 끝으로 이동하면 다시 처음으로 되돌리는 부분은 반복자(iterator)를 이용해 쉽게 구현할..
[Baekjoon] 1018 - 체스판 다시 칠하기 (C++) https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net M × N 크기의 보드가 주어집니다. 이를 8 × 8 크기의 정사각형으로 잘라서 색을 칠했을 때 다시 칠해야 하는 정사각형의 최소 개수를 구하는 문제입니다. 입력으로 들어오는 N과 M의 크기가 최대 50인 것을 보고 브루트 포스로 모든 경우의 수를 다 고려해서 풀면 될 것 같다는 생각이 들었습니다. 8 × 8 크기로 자른 보드에서 첫 번째 칸의 색이 하얀색인 경우와 검은색인 경우에 대해 개..
[Baekjoon] 9935 - 문자열 폭발 (C++) https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 문제 상근이는 문자열에 폭발 문자열을 심어 놓았다. 폭발 문자열이 폭발하면 그 문자는 문자열에서 사라지며, 남은 문자열은 합쳐지게 된다. 폭발은 다음과 같은 과정으로 진행된다. 문자열이 폭발 문자열을 포함하고 있는 경우에, 모든 폭발 문자열이 폭발하게 된다. 남은 문자열을 순서대로 이어 붙여 새로운 문자열을 만든다. 새로 생긴 문자열에 폭발 문자열이 포함되어 있을 수도 있다. 폭발은 폭발 문자열이 문자열에 없을 때까지 계속된다. 상근이는 모든 폭발이 끝난 www.acmicpc.net 문자열에서 특정 문자열(폭발 문자열)을 찾아 아예 없어질 때까지 반복해서 지워주는 문제입니다. 하지만 단순히 반복만 하면서 지울 경우..