전체 글 63

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

[Computer Architecture] 컴퓨터 구조를 알아야 하는 이유

컴퓨터 구조를 알아야 하는 이유 1. 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 찾을 수 있다. 2. 서버 컴퓨터, 클라우드 서비스 이용 시 CPU, 메모리 등 성능/용량/비용을 고려하여 선택할 수 있다. 컴퓨터 정의 : 명령어를 처리하는 기계 종류 : 아두이노, 라즈베리 파이 / 스마트폰, 노트북, 데스크톱, 서버 컴퓨터 컴퓨터 구조 도식화 컴퓨터 구조는 크게 컴퓨터가 이해하는 정보(0과 1로 표현된 정보. e.g. 데이터, 명령어), 컴퓨터의 네 가지 핵심 부품(CPU, 메모리, 보조기억장치, 입출력장치)으로 나눌 수 있다. CPU : 메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어를 해석하고, 실행하는 부품. - Arithmetic Logic Unit(계산기) - regis..

CS 2023.10.09