_

Always be tactful

728x90

2025/02 18

[GitHub] Conventional Commits / 커밋 유형 정리

커밋 메시지를 유의미하게 작성하자. 커밋 유형을 통해 각 커밋이 어떤 종류의 변경을 포함하는지 설명할 수 있다. 커밋 메시지를 잘 작성하면, 나중에 프로젝트의 변경 이력을 살펴볼 때 쉽게 이해할 수 있다. 다음은 일반적으로 구분되는 커밋 유형이다. feat (새로운 기능 추가)  feat: 로그인 기능 추가fix (버그 수정)  fix: 로그인 화면에서 발생하는 오류 수정docs (문서 수정)  docs: README.md 파일 업데이트style (스타일 변경)  style: 코드 들여쓰기 정리refactor (리팩토링)  refactor:  함수 구조 개선perf (성능 개선)  perf: 이미지 로딩 속도 개선test (테스트 추가/수정)  test: 유닛 테스트 추가chore (기타 작업)  cho..

[Java] 나를 위해 정리한! 피드백 모음!

개발은 혼자 하는 것이 아니다. 다른 개발자와의 원활한 소통을 위해서 좋은 이름을 짓는 것은 아주 중요하다. 변수 이름, 메서드 이름, 클래스 이름을 짓는데 시간을 투자하자. 이름을 통해 의도를 드러내자. [❗] 변수 이름에 자료형을 사용하지 말자.  변수명에 자료구조 이름을 포함시키면, 나중에 그 자료구조를 변경할 때 변수명을 변경해야 할 수 있다. 변수명을 자료구조에 의존하지 않도록 짓자.  자료형을 드러내는 것보다 의도를 드러내는 것이 중요하다. 예를 들어 carNameList는 해당 변수의 자료형인 리스트에 초점을 맞추고 있다. 차라리 carModels와 같이 구체적인 변수명을 사용하면 해당 변수가 차 모델을 담고 있다는 의도가 명확하게 전달된다.String carNameList = Console..

[Java] BOJ 11723: 비트마스크 (BitMask)

들어가기에 앞서  비트마스크란 컴퓨터의 비트를 이용해, 이진 데이터로 상태를 저장하고 처리하는 기법이다. 작은 메모리 공간으로 다양한 연산을 수행할 수 있기에 효율적인 알고리즘을 설계할 수 있다. 주로 플래그 설정, 집합의 요소 추적, 특정 비트에 대한 연산 등에 사용된다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashSet;import java.util.StringTokenizer;public class Problem11723 { public static void main(String[] args) throws IOException { ..

[Java] BOJ 1654: 이진 탐색, 이분 탐색 (Binary Search)

들어가기에 앞서  이진 탐색이나 이분 탐색이나 영어로는 Binary Search로 같은 말이다.  결국 데이터를 반으로 나누어가며 목푯값을 찾는 알고리즘이다. 여기서 말하는 데이터는 정렬된 배열을 말한다.  정렬된 배열로 진행해야 하는 이유는 이진 탐색 원리에 있다.  우선 시작점과 끝점을 가지고 중간점을 만든다. 중간값을 기준으로 원하는 값과 비교하여 탐색할 구간을 좁혀나간다. 원하는 값이 중간값보다 작으면 왼쪽 절반을 탐색하고, 더 크면 오른쪽 절반을 탐색한다.  위 작업을 반복하다가 원하는 값을 찾거나 구간이 사라지면 종료한다. 이진 탐색을 왜 사용할까?  배열을 처음부터 끝까지 차례대로 탐색하는 방법을 선형 탐색이라고 한다. 배열의 길이가 N이라고 할 때, 최악의 경우 시간복잡도는 O(N)이다. ..

[IntelliJ] Git Clone / Clone failed: repository not found

GitHub 조직 초대를 받았다. GitHub에서 따로 알림이 오지 않아, 처음에는 초대받은 줄도 몰랐다. 어느 순간 GitHub에 연동된 이메일로 들어가 보니 초대장이 있었다.  일단 작업하기 위해 조직 리포지토리를 내 개인 계정에 포크 했다. 그리고 평소와 같이 인텔리제이로 Git Clone을 시도했는데, 해당 리포지토리가 private이라 그런지 접근을 위한 로그인 요청을 받았다. 문제는, 요청에 따라 제대로 로그인을 했음에도 계속해서 리포지토리를 찾을 수 없다며 클론에 실패했다.  아직도 왜인지는 잘 모르겠다. 아무튼 기존 로그인 방식을 선택하지 않고 토큰을 생성해 인증하는 방식을 취하니 클론에 성공했다. (사용 권한이고 뭐고 인터넷에서 나온 방식들 전부 아니었고 토큰을 사용하니 해결됐다.)토근 ..

[Java] BOJ 4134: 에라토스테네스의 체

소수 검증static boolean isPrimeNumber(int n) { if (n ▶ 특정 숫자가 소수인지를 판단할 때, 우리는 해당 숫자의 제곱근까지만 약수 여부를 검증하면 된다. 그런데 만약, 범위 내의 소수를 모두 알고 싶다면 어떻게 해야 할까?범위 내 소수 검증public static void main(String[] args) { Scanner sc = new Scanner(System.in); int start = sc.nextInt(); int end = sc.nextInt(); for (int i = start; i ▶ 앞서 제시한 메서드를 사용하면, 당연히 반복문을 통해 범위 내 소수를 나열할 수 있다. 하지만 입력된 범위가 커지면 커질수록 더 많은..

[Java] OCP (Open-Closed Principle) / 개방-폐쇄 원칙

좋은 객체 지향 설계 원칙에는 여러 가지가 있지만, 그중 하나가 바로 OCP다.Open for extentionClosed for modification 즉, 기존 코드는 수정하지 않으면서 새로운 기능을 위해 확장할 수 있어야 한다. *기존 코드: 시스템의 핵심 동작 코드*확장된 부분: 요구사항 추가 구현Strategy Pattern  전략 패턴이란 다양한 객체 지향 디자인 패턴 중 하나로, 알고리즘을 클래스로 캡슐화하여 동적으로 변경할 수 있게 해주는 패턴이다. 이 패턴은 알고리즘을 사용하는 코드와 알고리즘 자체를 분리하여, 새로 추가된 알고리즘이 기존 코드에 영향을 주지 않도록 한다.[전략 패턴의 기본 구조]클라이언트 코드 (Context)전략 인터페이스 (Strategy)구체적인 전략 (Concre..

728x90