ETC(8)
-
Discord에서 Github Bot 설정하기
현재 캡스톤 프로젝트를 진행 중인데 역할 별로 어떤 부분을 개발하고 있는지 잘 알기 위하여 Github Bot을 적용하기로 했다. 현재 Discord에서 회의를 하기 때문에 Discord에서 설정하기로 했다. 0. Webhook 웹훅이란 웹에서 발생하는 특정 이벤트를 콜백으로 변환해 주는 것이다. 즉, 서버에서 이벤트가 일어나면 미리 정의한 callback URL로 클라이언트를 호출하는 방식이다. 우리는 Git에서 어떤 이벤트가 일어날 때 Discord 클라이언트를 호출하게 된다. 1. Discord 에서 채널 설정 우선 Discord에서 채널을 하나 생성한다. 나는 github라는 채널을 생성하였다. github 오른쪽의 톱니바퀴 모양을 눌러 해당 채널의 설정으로 들어가 연동 탭에 들어간다. 연동 탭에..
2024.03.13 -
시간복잡도
1. 개요 알고리즘의 시간복잡도에 대해 알아보자. 2. 정의 시간 복잡도 : 문제를 해결하기 위한 연산 횟수, 일반적으로 1억 번의 연산을 1초로 간주 3. 유형 빅-오메가 Ω(n) : 최선일 때 (Best case) 빅-세타 θ(n) : 보통일 때 (Average case) 빅-오 O(n) : 최악일 때 (Worst case) -> 코딩테스트에서는 빅-오를 염두하고 임한다. -> 다양한 테스트 케이스를 수행해 모든 케이스를 통과해야 하기 때문이다. 문제의 시간복잡도를 충족하며 해결하기 위해서는 1. 알맞은 알고리즘을 사용하고 2. 비효율적인 로직 찾아서 효율적으로 바꾼다
2024.02.14 -
백준 2164 : 카드2
문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다. N이 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 프로..
2023.09.04 -
백준 1181 : 단어 정렬
문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. import java.util.Arrays; import java.util.Comparator; import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { public static void main(String[] args) { Main main = new Main(); Scanner sc = new Scanner(System.in); int length = sc.nextInt(); sc.ne..
2023.09.01 -
IP 에 대해 알아보자!
웹 개발을 하다 보면 IP 라는 단어가 많이 등장한다. IP라 하면 난 막연히 IP 주소를 생각했던 것 같다. 이번 기회에 IP에 대해 공부한 내용을 정리해보고자 한다. What is IP IP 란 Internet Protocol 의 약자로 인터넷상에서 어떤 정보를 수신 및 송신하기 위한 통신 규약이다. IP 의 역할 1. 지정된 IP 주소(IP Address) 에 데이터 전달 2. 패킷(Packet) 이라는 통신 단위로 데이터 전달 IP 의 한계 클라이언트는 출발지(클라이언트 IP) 와 도착지(서버 IP), 전송할 데이터를 담은 패킷을 인터넷을 통해 서버로 보내려고 한다. 패킷은 출발지에서 도착지로 바로 가지 않고 인터넷의 수많은 노드(서버)들을 거쳐서 도착하게 된다. 이러한 방식 때문에 몇 가지 한..
2023.06.17 -
객체지향 설계 5원칙 - SOLID
이전에 작성한 객체 지향 생활 체조 글에서 SOLID 원칙을 언급한 바 있다. SOLID 원칙을 잘 적용하기 위해 객체 지향 생활 체조를 적용한다고 했었는데 그렇다면 이제 SOLID에 대해 알아보도록 하자. 2023.03.03 - [Java] - 객체지향 생활 체조 객체 지향 생활 체조 친형이 자바를 이용한 미션을 주고 코드리뷰를 진행해 주었다. 이때 제일 먼저 알려준 것이 바로 객체지향 생활 체조 9가지 원칙이다. SOLID 원칙을 적용하기 위한 객체지향 생활 체조 9 원칙은 코 koomchang.tistory.com SOLID 원칙이란? SOLID 원칙이란 객체지향 프로그래밍을 위해 지켜야 할 원칙 5가지의 첫 글자를 딴 것이다. Single-Responsibility Principle : 단일 책임..
2023.04.12 -
git action 을 이용한 CI/CD 구축
학교에서 알파프로젝트를 진행하며 항상 새로운 것을 배우는 것을 목표로 하고 있다. 지난 학기 알파프로젝트에서는 Docker 컨테이너에 대해 학습하고 적용해 보았고 이번 프로젝트에서는 개발뿐 아니라 테스트 코드 작성 및 CI/CD 파이프라인을 간단하게 라도 시도해보고자 하였다. CI / CD 파이프라인 CI/CD 란 Continuous Integration / Continuous Delivery를 의미한다. 지속적 통합, 지속적 배포라고도 불린다. 소프트웨어의 개발, 테스트, 배포를 통합하고 이를 자동화하는 것을 목표로 한다. 이를 이용하면 사용자가 개발한 코드에 대해서 직접 테스트를 하지 않더라도 CI/CD가 자동으로 테스트를 해주며 문제가 없을 시 배포까지 자동으로 연결되도록 진행할 수 있다. 저번 프..
2023.04.09 -
객체지향 생활체조
SOLID 원칙을 적용하기 위한 객체지향 생활 체조 9 원칙은 코드를 readable(읽기 좋은), maintainable(유지 관리), reuseable(재사용 가능), scalable(확장 가능) 하게 디자인 할 수 있다. 더보기 객체지향 생활 체조 9가지 원칙 규칙 1: 한 메소드에 오직 한 단계의 들여쓰기(indent)만 한다. 규칙 2: else 예약어를 쓰지 않는다. 규칙 3: 모든 원시값과 문자열을 포장한다. 규칙 4: 한 줄에 점을 하나만 찍는다. 규칙 5: 줄여쓰지 않는다(축약 금지). 규칙 6: 모든 엔티티를 작게 유지한다. 규칙 7: 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 규칙 8: 일급 컬렉션을 쓴다. 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다. 1. 한 메소드에..
2023.03.03