분류 전체보기
정적 팩토리 메서드 패턴
객체 생성을 캡술화 하는 기법으로 좀더 구체적으로 객체를 생성하는 메서드를 만들고 static으로 선언하는 기법이다. 장점 이름이 있으므로 생성자에 비해 가독성이 좋다. 호출할 때마다 새로운 객체를 생성할 필요가 없다. 하위 자료형 객체를 반환할 수 있다. 객체 생성을 캡슐화할 수 있다. 단점 정적 팩토리 메서드만 있는 클래스라면, 생성자가 없으므로 하위 클래스를 못 만든다. 정적 팩토리 메서드는 다른 정적 메서드와 잘 구분되지 않는다. 위와 같은 장단점이 있는데 하나 씩 확인해보자. 1. 가독성 생성자와 비교했을 때 가독성이 높다는 것인데 비교를 위해서 아래 와 같은 클래스를 만들었습니다. 4개의 정적 팩토리 메서드 패턴을 만들었습니다. public class Character { int STR; in..
프로그래머스 - 배달 문제 (자바)
https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 다익스트라 알고리즘으로 1마을 에서 의 거리 배열을 초기화 해주고 그 중 k보다 작은 경우 count하면 해결 import java.util.*; class Node implements Comparable { private final int index; private final int cost; public Node(int index, ..
프로그래머스 - N개의 최소공배수 문제 (자바)
https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr 첫번째 값과 두번째 값의 최소공배수를 구하고 해당 최소공배수와 세번째 값의 초소공배수를 구하는 방법으로 마지막 값까지 구하면 되는 문제 최대 공배수를 유클리드 호제법을 통해서 구하고 이를 통해서 최소 공배수를 구하면 해결된다. class Solution { public int solution(int[] arr) { in..
자바 Enum 활용
자바 Enum의 장점 - 안정성 향상: 객체 범위 제한 - 소스 가독성 향상: 상수의 사용 목적 및 해석 용이 - IDE의 적극적인 지원: 자동완성, 오타검증, 텍스트 리팩토링 Enum을 어떻게 활용할 수 있을까요? 1. CODE 관리용 테이블 교체 학생 연구원 당시 아래보다 좀더 칼럼이 많은 형태의 관리용 테이블이 있었습니다. 또한 아래 처럼 코드를 직접 넣어서 동적 쿼리에 적용 시켰습니다. aBox.setIfEmpty("hits", 0); aBox.setIfEmpty("notiSt", "OS01"); aBox.setIfEmpty("noticetarget", "NT01"); aBox.setIfEmpty("notiType","N"); SELECT COUNT(NO.NOTICE_SEQ) AS TOTAL_CO..
자바 final 키워드
롬복에서 @RequiredArgsConstructor 어노테이션를 적용하면 private fianl로 선언된 필드를 포함하는 생성자를 자동으로 만들어 준다. 최근 우아한 형제들의 우아한 테크코스 과정을 진행하시는 분들의 코드를 깃허브를 통해서 보게되었는데 필드, 매개변수등 final 키워드를 적용하는 것을 보면서 final 키워드에 대해서 한번 제대로 공부해서 정리해야겠다라는 생각을 하게 되었습니다 .ㅎ final final 키워드는 변수(variable), 메서드(method), 또는 클래스(class)에 사용될 수 있습니다. 이 final 키워드는 어떤 곳에 사용되냐에 따라 다른 의미를 가집니다. 하지만 final 키워드를 붙이면 무언가를 제한한다는 의미를 가지는 것은 공통적이 성격입니다. 변수(va..
프로그래머스 - 압축 문제 (자바)
https://programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 사실 본인은 아래 코드 처럼 깔끔하게 코딩을 하지 못했다. 풀고나서 다른 사람 풀이를 보고 정리한 상태이다. 간단하게 이해해보자면 기존 알파벳을 전부 등록하고 문자열을 2개 씩 붙혀가면서 비교한다. 과정에서 고려해야하는 것은 반복문 중에 index가 마지막 위치까지 오는 경우이다. import java.util.ArrayList; import java.util.HashMap; // 프..
프로그래머스 - 스킬트리 문제 (자바)
https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 말로 설명하는 것보다 코드로 보는게 더 이해하기 편할거 같다. 그래도 조금 설명하자면 유저의 스킬 트리 중 선행 관련 스킬에 해당 되면 indexOf를 통해서 위치를 구하여서 선후를 구하면 된다. // 프로그래머스 스킬트리 문제 class SkillTree { public int solution(String skill, String[] skill_trees) { int answer = 0; for (String skillTree : skill_trees) { int learningIdx = 0; boolean isAble = true; for ..
프로그래머스 - 프렌즈4블록 문제 (자바)
https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 모든 지점에서 아래, 오른쪽, 오른쪽 아래 3곳과 비교해서 전부 같으면 삭제하는 형태로 진행했습니다. 1. char 2차원 배열 -> int 2차원 배열 2. 모든 지점의 아래, 오른쪽, 오른쪽 아래 3곳 비교 후 처리 - 우선 int 2차원 배열을 깊은 복사한다. (이유는 삭제 지점이 겹치는 경우 때문 비교에 사용하는 배열과 삭제를 반영..