본문 바로가기

전체 글

(386)
Parser와 웹 브라우저의 HTML분석 방식 및 정규표현식에 대하여 https://ko.wikipedia.org/wiki/%EA%B5%AC%EB%AC%B8_%EB%B6%84%EC%84%9D 구문 분석 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전.ko.wikipedia.org 컴퓨터 과학에서 파싱((syntactic) parsing)은 일련의 문자열을 의미있는 토큰(token)으로 분해하고 이들로 이루어진 파스 트리(parse tree)를 만드는 과정을 말한다.   tokenizer, lexer, parser 역할과 책임1. 토크나이저 (Tokenizer)역할:입력 텍스트를 의미 있는 단위인 토큰(token)으로 분할합니다.책임:텍스트 스트림을 공백, 구두점, 특수 기호 등을 기준으로 나누어 개별 토큰을 생성합니다.언어에 따라 다를 수 있는 토큰화 규..
Java - Stream 으로 코드 최적화 List walkList = activityRepository.findByUsername(username); List res = new ArrayList(); for(Walk w : walkList){ res.add(new GetWalkDto(w.getDistance(), w.getAvg_heart_rate())); } return res; Walk 리스트를 가져와서 Dto에 맞게 리턴해주는 함수이다. 그러나 이것은 너무 길고 비효율적이다. stream 을 사용해 최적화할 수 있다. List walkList = activityRepository.findByUsername(username); return walkList.stream(..
쉘 스크립트 자동화와 리눅스 환경설정 1. 로컬 컴퓨터와 리모트 컴퓨터- 로컬 컴퓨터는 본인의 물리적 컴퓨터를 의미한다. 리모트 컴퓨터는 가상 컴퓨터나 클라우드 컴퓨터 등 원격으로 접속하여 지금 접속한 물리 컴퓨터의 리소스가 아닌 리소스를 사용할 수 있다. 로컬 컴퓨터에서 작업하여 리모트 컴퓨터에서 배포하는 일은 매우 흔한 일이다. 이 개념은 깃을 관리하며 많이 겪었던 원격저장소와 로컬저장소의 개념과 유사하다. 그리고 이 원격 컴퓨터(자원)에 접속할 때 가장 많이 쓰이는 프로토콜이 바로 SSH이다.SSH보안: SSH는 데이터 전송 과정에서 암호화를 사용하여 데이터의 기밀성을 보호합니다. 이는 네트워크를 통해 전송되는 정보가 노출되지 않도록 합니다.원격 접속: SSH를 사용하여 원격 서버나 컴퓨터에 접속할 수 있습니다. 사용자는 SSH 클라이..
커밋의 단위, 규칙 커밋의 단위는 그 지점에서 반드시 버그가 없고 작업을 시작할 수 있는 지점으로 잡는다. 만약 로그인을 만든다고할 때 로그인 config를 만들었다면 커밋한다. fix: 고침feat: 기능 구현
Git의 작동원리와 기본 사용법, rebase 와 merge, fork의 사용이유 Git 이란?- 어렵게 생각할 필요 없이 많은 개발자들이 특정한 코드들을 함께 관리하고, 버전관리를 쉽게 할 수 있도록 만든 프로그램이다.  Git 용어 정리add : 작업 디렉토리에서 변경된 파일들을 스테이징 영역에 추가. 커밋의 전 단계라고 보면 된다.commit : 스테이징 영역에 있는 변경 사항을 실제 로컬 저장소에 기록한다.branch : 독립적으로 작업 가능한 브랜치를 생성한다. 예를들어 만약 A기능을 실험하고 싶다면 실험A 브랜치를 만들어 실험할 수 있다.checkout (또는 switch) : A 브랜치에서 B로 이동하여 작업하고 싶을 때 사용한다.push : 위에서 커밋한 내용을 실제 원격 저장소에 내보내기 위해 사용한다.pull : 원격 저장소의 변경 사항을 로컬 저장소로 가져온다. p..
엘리스 - 트리 위의 게임(C++) 코딩 첼린지? 문제여서 제공이 되는 지 모르겠다. 문제는 다음과 같다. 트리 위의 게임시간 제한: 1 초정점 N개의 트리에서 두 사람이 게임을 진행하려 한다.각 정점은 1번부터 N번 까지 번호가 매겨져 있고 루트노드는 1번 노드이다.게임은 서로 턴을 번갈아 가며 진행되고 트리 위에 놓을 수 있는 말과 함께 진행된다.두 사람의 점수는 모두 0점으로 시작한다.각 턴마다 두 사람은 다음과 같은 작업을 반복한다.현재 말이 놓여 있는 정점의 번호만큼 자신의 점수에 더한다.현재 말이 놓여 있는 정점의 자식 정점이 없다면 그대로 게임을 종료한다.자식 정점이 존재한다면 자식 정점 중 원하는 자식 정점으로 말을 옮긴다.게임이 종료되었을 때 선공의 점수가 후공의 점수보다 높거나 같다면 선공이 승리하고 아니라면 후공이 승리..
백준 7662번 - 이중 우선순위 큐 (C++) https://www.acmicpc.net/problem/7662 이름 처럼 우선순위큐를 반드시 두개 사용해야 풀 수 있다. 1 2 3 4 가 값으로 들어온다면, 하나의 큐는 1 2 3 4 순으로다른 하나의 큐는 4 3 2 1 순으로 우선순위가 구성되어야 한다. 즉, 최대힙과 최소힙이 필요하다. 아이디어 1.언제나 최대힙의 top > 최소힙의 top 이면 되지 않을까 즉, 만약 최대힙에서 pop을 3번, 최소힙에서 pop을 1번 하게 되면 최대힙의 top은 1이고 최소, 힙의 top은 2이다. 위의 원칙을 어겼다. 이 뜻은 이미 최소힙의 top은 최대힙에서 pop되었다는 의미이기 때문이다. 하지만 이 방법은 20퍼센트에서 틀렸습니다를 받았다. 만약 모든 수가 다르다는 조건이 있었다면 맞았을 지 모르겠으나..
배낭문제에서 넣은 것을 저장하는 아이디어 문제는 https://www.acmicpc.net/problem/14728 문제를 예로 들었다. 배낭문제를 푸는데 어떤 것을 넣었는지 기억해야하는 문제가 있었다. 나의 경우 trace 벡터를 만들고 배낭에 넣을 때의 따라 벡터를 조절하며 문제를 해결했다. 그러나 2차원 크기의 벡터가 필요하기 때문에 메모리가 상당히 많이 필요할 것으로 보여서 N이 충분히 작을 때만 사용할 수 있을 것 같다. 더 좋은 방법이 있을까... 트레이스 벡터는 만약 갱신하게 되면 i번 물건을 가져간다는 의미로 인덱스를 넣는다. dp와 거의 유사하게 동작한다. #include#includeusing namespace std;int N, M;int dp[101][10001];int main(){ cin >> N >> M; vector..