분류 전체보기 64

동적 계획법(dynamic programming)

동적 계획법 복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법 원리 1. 큰 문제를 작은 문제로 나눌 수 있어야 한다. 2. 작은 문제들이 반복돼 나타나고 사용되며 이 작은 문제들의 결괏값은 항상 같아야 한다. 3. 모든 작은 문제들은 한 번만 계산해 DP 테이블에 저장하며 추후 재사용할 때는 이 DP 테이블을 이용한다. 이를 memoization 기법이라고 한다. 4. 동적 계획법은 top-down 방식과 bottom-up 방식으로 구현할 수 있다. 피보나치 수열 공식 D[N] = D[N-1] + D[N-2] // N번째 수열 = N-1번째 수열 + N-2번째 수열 구현 방식 1. 동적 계획법으로 풀 수 있는지 확인하기 2. 점화식 ..

Algorithm 2023.10.13

JUnit으로 테스트하기

TDD(Test-driven Development) 테스트 주도 개발에서 사용하지만, 코드의 유지 보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 단위별로 검증하는 테스트 프레임워크 단위테스트 작성한 코드가 기대한 대로 동작하는지 검증하는 절차 JUnit Java 기반의 단위 테스트를 위한 프레임워크 Annotation 기반으로 테스트를 지원하며, Assert를 통해, (예상, 실제)를 통해 검증 Jacoco Java 코드의 코드 커버리지를 체크하는 라이브러리. 결과를 html, xml, csv로 확인 가능하다. build.gradle plugins {} 안에 id 'jacoco' 를 추가해준다. Test Coverage 확인하기 1. report 확인 위와 같이 추가된 것을 확인할 수 있다. ve..

Java 2023.10.13

[Programmers] Hash > 폰켓몬 (Java)

https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 총 N 마리 포켓몬 중 N/2마리를 가져갈 수 있다. 폰켓몬 종류의 수가 최대한 다양하게 가질 수 있도록 선택한다. 구현 착안 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아야하므로, 중복을 허용하지 않는 hashset을 사용하여 구현한다. 구현 순서 다음과 같은 순서로 생각해볼 수 있다. 1. int[]의 nums를 hashset으로 담아주어 중복을 제거한다. 2. answer는 has..

Algorithm 2023.10.12

[Computer Architecture] 0과 1로 문자 표현하기

1. 컴퓨터가 표현하는 정보 단위 bit 컴퓨터가 이해하는 가장 작은 정보 단위. 0과 1로 나타낸다. 1byte = 8bit kB : 1kilobyte = 1,000byte MB : 1megabyte = 1,000kilobyte GB : 1gigabyte = 1,000megabyte TB : 1terabyte = 1,000gigabyte c.f. word(단위) CPU가 한 번에 처리할 수 있는 데이터 크기. e.g. half word, full word(1배 크기), double word -> 현대 컴퓨터의 워드 크기는 대부분 32비트 또는 64비트이다. 이진법(binary) 이진수 표기 : 1000(2) 또는 0b1000 이진수의 음수 표현 2의 보수(two's complement) : 어떤 수를 ..

CS 2023.10.11

[Programmers] 게임 맵 최단거리 Java

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. ..

Algorithm 2023.10.10

[Web] Web Server 관련 개념

Application Programming Interface를 사용해서 PC나 스마트폰에서 동작하는 프로그램을 만들 수 있다. API 프로그램을 쉽게 제작할 수 있게 미리 만들어 놓은 것들의 모음. Client 다른 곳에 있는 단말에 데이터를 달라고 요청하는 프로그램 Server 다른 곳에서 요청받은 명령을 처리해 주는 프로그램 프로그램을 인터넷에 연결하기 위해서는 단말에 Network Card(or Ethernet Card)가 있어야 한다. 두 개의 서로 다른 단말에 모두 네트워크 카드가 들어 있다면 클라이언트, 서버로 사용할 수 있다. Server : port를 지정하여 요청받을 수 있다. Client : 서버가 지정하는 port로 접속하게 된다. port 단말에 접속하기 위한 논리적인 접속 위치 W..

CS 2023.10.10

[Naver API] 검색 API 사용해보기

https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8 검색 > 블로그 - Search API 검색 > 블로그 블로그 검색 개요 개요 검색 API와 블로그 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 영화, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 developers.naver.com 위의 공식 문서를 참고한다. curl "https://openapi.naver.com/v1/search/blog.xml?query=%EB%A6%AC%EB%B7%B0&display=10&start=1&sort=sim" \ -H "X-Naver-Client-Id..

Project 2023.10.09

[Programmers] 타겟 넘버 Java

https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=java 문제 설명 그래프의 모든 정점을 순회하면서 target에 해당하는 계산식을 찾는다. 백트래킹이므로 dfs로 구현한다. class Solution { int count = 0; public int solution(int[] numbers, int target) { int answer = 0; dfs(numbers, target, 0, 0); // depth, result answer = this.count; return answer; } public void dfs(int[] numbers, int target, int depth, int result) { if(dep..

Algorithm 2023.10.09

DFS와 BFS

Intro dfs와 bfs는 트리의 순회처럼 그래프의 모든 정점을 특정 순서에 따라 방문하는 그래프의 탐색 알고리즘이다. Graph 계층적인 구조보다 좀더 일반적이고 강력한 자료 구조 - 현실 세계의 사물이나 추상적인 개념 간의 연결 관계를 표현한다. e.g. 여러 도시를 연결하는 도로망, 사람들 간 지인 관계, 웹사이트 간 링크 적용할 수 있는 문제 - 철도망의 안정성 분석 - 소셜 네트워크 분석 - 인터넷 전송 속도 계산 - 한 붓 그리기 - 외환 거래 암시적 그래프 구조 - 할 일 목록 정리 - 15-퍼즐 - 게임판 덮기 - 회의실 배정 Tree와의 차이점 Graph는 부모 자식 관계에 대한 제약이 없다. 그래프 G(V, E) : 어떤 자료나 개념을 표현하는 vertex들의 집합 V와 이들을 연결하..

Algorithm 2023.10.09

[OPIc] 답변 구조

질문 What do people normally do on the internet? Do they play games, watch television, or watch movies? Talk about all the things people do online. 답변 구조 [Main Point] People do tons of things on the internet these days. [Support] First, Also, Plus, etc. [Wrap up] So, these are the things people do on the internet. 물어본 질문에 대한 답변을 한 줄로 간결하게 가장 먼저 말한다. 주장하는 바와 예시는 다양한 접속어를 사용해서 뒷받침한다. 마지막으로 Main Poin..

English 2023.10.09