TIL

내일배움캠프 TIL 16.

phonebee 2025. 1. 16. 20:47

▶ Java 코드카타 문제 풀이

▷ 50. 가장 가까운 같은 글자

 

● 문제 풀이 시 조건

- 배열 안에 있는 글자가 아닌 글자가 들어오는 경우에는 -1로 표현

- 배열 안에 있는 글자가 들어온 경우에는 앞에 있는 칸의 크기만큼 표현

 

● 코드

import java.util.HashMap;

public class JavaSolution_50 {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        HashMap<Character, Integer> m = new HashMap<>();

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            answer[i] = i - m.getOrDefault(c, i + 1);
            m.put(c, i);
        }

        return answer;
    }
}

 

● 풀이 시 알게 된 것

- getOrDefault() : 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드

→ 코드 구조

맵명.getOrDefault(키, 기본값)

 

▶ 계산기 과제 피드백

▷ Checked Exception 과 Unchecked Exception

● Checked Exception

- RuntimeException의 하위 클래스가 아니면서 Exception 클래스의 하위 클래스인 경우를 말한다.

- 체크 예외는 반드시 에러 처리를 해야한다.

ex)

○ 존재하지 않는 파일의 이름을 입력(FileNotFoundException)

○ 실수로 클래스의 이름을 잘못 적음(ClassNotFoundException)

 

● Unchecked Exception

- RuntimeException의 하위 클래스인 경우를 말한다.

- 체크 예외와는 다르게 예외 처리를 강제하지 않는다.

ex)

○ 배열의 범위를 벗어난 예외(ArrayIndexOutOfBoundsException)

○ 값이 null이 참조변수를 참조(NullPointerException)

 

* 왜 언체크 예외는 예외 처리를 강제하지 않았는가?

: 코드가 굉장히 복잡해지기 때문

→ 단순히 배열을 만들어 배열의 원소를 출력하는데도 try/catch문을 사용해야해서 코드가 복잡해진다.

 

▷ 깃에서 사용하는 커밋 컨벤션(Commit Convention)

● 커밋 메세지 구조

- 제목, 본문, 꼬리말 세가지 파트로 나누고 한 줄을 띄어 구분합니다.

○ 제목 : 어떤 작업을 했는지 명확하게 드러나야하고, 너무 길지 않게 작성해야 한다.

○ 본문 : 긴 설명이 필요한 경우에 작성한다. 어떻게 했는지가 아니라, 무엇을 왜 했는지를 작성한다.

○ 꼬리말 : 이슈 번호를 참조시킬 때 주로 사용한다.(선택사항)

 

● 제목(type)

○ type은 subject와 함께 제목 내에 포함된다.

○ type: subject 의 형태로 작성되며 : 뒤에만 띄어쓰기를 한다.

○ 타입명들

feat 새로운 기능 추가
fix 버그 수정
design CSS 등 사용자 UI 디자인 변경
refactor 코드 리팩토링
comment 주석 추가 및 수정
style 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
docs 문서 수정
test 테스트 추가, 테스트 리펙토링
chore 빌드 부분 혹은 패키지 매니저 수정사항
rename 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우
remove 파일을 삭제하는 작업만 수행한 경우

 

○ subject

- subject는 type과 함께 제목 내에 포함된다.

- 명령조로 작성하며, 문장보다는 구문으로 작성한다.

- 영문으로 작성할 경우 첫 글자는 대문자로 시작한다.

- 끝에 마침표(.)를 사용하지 않는다.

- 한 줄에 50자를 넘으면 안된다.

 

ex)

feat: Add .gitinore

feat: .gitignore 추가

 

● 본문

○ 모든 커밋이 본문을 사용해야 할만큼 복잡하지 않기 때문에 선택 사항이다.

○ 커밋에 대한 맥락과 부연 설명이 필요할 때 작성한다.

○ 어떻게보다 무엇을, 왜 변경했는지를 작성한다.

○ 본문을 작성할 때 제목과 본문 사이에 한 줄을 띄고 작성한다.

○ 한 줄에 72자를 넘지 않아야한다.

 

● 꼬리말

○ 꼬리말은 선택 사항이며, 이슈 트래커 ID를 참조하는데 사용된다.

○ 꼬리말은 유형: #이슈 번호 형식으로 작성한다.

○ 여러 개의 이슈 번호를 적을 때는 쉼표로 구분한다

'TIL' 카테고리의 다른 글

CH2 키오스크 과제 TIL  (0) 2025.01.19
내일배움캠프 TIL 17.  (0) 2025.01.17
내일배움캠프 TIL 15.  (1) 2025.01.15
내일배움캠프 TIL 14.  (1) 2025.01.14
내일배움캠프 TIL 13.  (0) 2025.01.13