전체 글

    백준 2115번 갤러리 (C++)

    문제 링크 문제 그림이 2칸짜리 선인데, 벽과 빈 공간 사이에 그림을 겹치지 않게 최대 몇 개나 걸 수 있는지 알아내는 문제이다. 풀이 그림을 거는 방향에 따라 벽과 빈공간의 패턴을 4가지로 나눌 수 있다. // 왼쪽 X. X. // 위 XX .. // 오른쪽 .X .X // 아래 .. XX 같은 벽에 그림을 놓을 때 한쪽 끝부터 그림을 꽉꽉 채워서 걸면 항상 가장 많이 걸 수 있다. 각각의 패턴에서 그림을 최대한 많이 걸어 보고 그 갯수를 구해서 더하면 된다. 그림을 겹치게 걸면 안되기 때문에 그림을 건 곳을 배열에 따로 표시하고 그곳은 나중에 패턴 검사를 건너뛴다. 구현 #include #include #include #include #include #include #include #include u..

    자바스크립트(Node.js) 로 백준문제 입출력 하기

    백준에서 자바스크립트로 알고리즘 문제를 풀어볼 수 있다! 백준에서 Node.js 채점을 지원하기 때문이다. 그런데 예제로 있는 소스를 보면 /dev/stdin 을 readFileSync 함수로 읽어서 표준 입력을 가져오는데... 이거 윈도우에선 안된다!! 그리고 리눅스에서 한다고 해도 일반적인 C/C++/Python 감각으로 입력을 받긴 힘들다. 그러면 윈도우에서도 동작하고 한줄만 읽기 등의 동작을 처리할 수 있게 하려면 어떻게할까? Node.js 에 readline 이라는 내장 API가 있긴 하지만... Node.js API 답게 입력을 처리하는게 콜백 구조로 되어있다. 때문에 이걸 그냥 사용하면 코드가 엄청 꼬여버린다. 순서가 직관적이지도 않고, 입력 처리가 복잡해지면 코드 구조가 매우 복잡해지게 된..

    Git에서 특정 리포지토리만 다른 Github 계정 쓰기

    공용 컴퓨터에서 Git을 사용하려다가 기본적으로 저장된 Github계정이 다른 사람의 계정일 때, 커밋이 그 사람 명의로 되어버리는 현상이 발생합니다. 이때, 해당 Repository 로 이동하여 다음 명령어를 입력하면 됩니다. USERNAME 을 Github 아이디(대소문자 구별) 로 바꾸고, EMAIL 을 Github 계정에 연결된 이메일로 바꾸면 됩니다. $ git config --local user.name "USERNAME" $ git config --local user.email "EMAIL" 이렇게 하면 이 Repository 에서만 본인 명의로 커밋이 됩니다. 그런데 여기서 push를 하려고 하면 이렇게 오류가 뜹니다. remote: Permission to Tekiter/Algorithm..

    Github Codespaces - 클라우드 IDE

    Github Codespaces Github Codespaces는 Github에서 현재 베타 서비스중인 기능입니다. 클라우드에 있는 리눅스 서버에서 웹 브라우저에서 실행되는 VS Code를 사용해 개발을 할 수 있습니다. 바로가기 왜 사용했나요? 현재 각종 공부와 활동을 사지방에서 하고 있어, 일반적인 개발 환경을 사용하면 매번 컴퓨터에 앉을때마다 모든걸 다시 설치를 해야 하는 번거로움이 있었습니다. Github Codespaces를 사용하면 웹 브라우저 접속만으로 이전에 사용하던 개발 환경을 계속 사용할 수 있습니다! 추가로 개발 환경 자체는 클라우스 리눅스 서버로 돌아가니, 현재 사용하고 있는 컴퓨터의 권한과 상관없이 원하는 개발 소프트웨어를 마음대로 설치해서 사용할 수 있습니다. 특징 Visual ..

    Github Codespaces 무한로딩 문제

    7월달에 신청했던 Github Codespaces 서비스 베타에 한달 전부터 사용 가능하게 되면서 Github Codespaces 서비스를 절찬리에 이용하는 중이다. 그런데 이미 만든 Codespaces 에 접속할때 간헐적으로 Starting Codespaces... 화면에서 계속 멈춰있는 현상이 나타났다. 그렇게 진행되지 않다가, 한 10분정도 기다리면 Codespaces disconnected. 라는 메시지가 뜨면서 Connect 버튼이 나타난다. 이 버튼을 누르면 다시 Starting Codespaces... 화면이 나오다가 그제서야 접속이 된다. 5번 접속하면 3번 접속할 때 마다 이 현상이 나타나서 Github Codespaces 문의 포럼에서 해당 내용을 찾아보고 문의를 하기도 했다. 그러다가..

    Pwntools 기본 사용법

    Pwntools 소개 Pwntools 는 리눅스 환경에서 익스플로잇을 짜는 것을 쉽게 할 수 있게 해주는 파이썬 라이브러리다. 공식 Github 주소 : https://github.com/Gallopsled/pwntools 공식 문서 주소 : http://docs.pwntools.com/en/stable/ Pwntools 설치 우분투 환경에서 다음 명령어를 입력하면 Pwntools를 쉽게 설치할 수 있다. sudo apt update sudo apt install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential sudo python3 -m pip install --upgrade pip sudo python3 -m pip ..

    파이썬으로 정수 입력 받기

    백준 문제를 풀 때는 다양한 형태의 정수 입력을 받아야 할 때가 많다. 이 때, 파이썬의 특징을 이용하면 정수 입력들을 편하게 파싱할 수 있다. 한 줄의 정수 하나 n = int(input()) 한 줄의 특정 개수의 정수 a,b,c,d = map(int, input().split()) 먼저 input() 받은 줄을 빈칸을 기준으로 split() 한 뒤에, 각각의 요소들을 map 함수를 통해 int로 바꾸어 준다. 입력이 '1 2 3 4' 라면 a=1, b=2, c=3, d=4 가 된다. 한 줄의 정수 리스트 nums = [int(x) for x in input().split()] 한 줄에 공백으로 나누어진 ?개의 정수를 리스트로 만들어준다. 입력이 '1 2 3 4 5' 라면 [1, 2, 3, 4, 5] ..

    [C++] STL 컨테이너

    array 고정된 크기를 가지는 배열이다.C의 배열과 같다.C의 배열처럼 이름이 첫번째 원소의 포인터로 변환되지는 않는다. #include #include using namespace std; int main() {array arr {{1, 3, 5}};array::iterator it; arr[3] = 7; cout