본문 바로가기

전체 글

(32)
[Java] 프로그래머스 Lv2 : 쿼드압축 후 개수 세기 🌎 Link : https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 접근 방법 이차원 배열 arr가 주어지고 쿼드 트리와 같은 방식으로 압축을 하는 문제이다. 여기서 포인트가 있는데 arr의 행의 개수는 1 이상 1024 이하이며, 2의 거듭 제곱수 형태를 하고 있습니다. 처음부터 n개의 숫자를 합칠 수 있는지 확인하고 안 될 경우 n /2 그다음 n/2^2 이런 식으로 점점 줄여서 탐색을 시작하면 된다. 백트레킹을 사용해서 문제를 구현하고 탈..
[Java] 10971번: 외판원 순회 2 🌎 Link : https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net 💡 접근 방법 1. 문제 이해 첫째 줄에 도시의 개수 N이 주어진다. 그리고 N개의 도시를 모두 방문하는 최소의 비용을 구하는 문제다. 예를 들어 1->2->3->4->1 이렇게 방문가능하다. 여기서 포인트가 있다. 어느 한 도시에서 출발해 N개의 도시를 모두 거쳐 다시 원래의 도시로 돌아오는 순회 여행 경로를 계획 N = 4 일경우 1..
해시(Hash)란? 해시(Hash)란? Hash는 데이터를 다루는 과정에서 빠르게 데이터에 접근하기 위해 사용되는 기술이다. Hash는 어떤 값을 고정된 크기의 값(해시 값)으로 변환된 결과를 말한다. 이 과정에서 사용되는 함수를 Hash Function라고 한다. 해시 함수(Hash Function) 해시 함수(Hash function)는 입력받은 데이터를 고정된 크기의 값으로 변환해 주는 함수를 말한다. 자바에서는 Object 클래스에 hashCode() 메서드를 통해 해시 코드를 제공하며 객체의 메모리 주소를 기반으로 한 정수 값을 반환한다. 해시 충돌(Hash Collision) 해시 함수를 보면 고정된 크기의 값으로 변환해 준다는 내용이 있다. 만약 입력값이 크든 작든 고정된 값을 변환해 주기 때문에 같은 해시 값..
[Java] 15664번: N과 M(10) 🌎 Link : https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 💡 접근 방법 1. 문제 이해 기존 N과 M시리즈 문제를 풀면서 어느 정도 백트레킹에 대한 감을 익히고 있다. 하지만 이 문제의 특징이 몇 가지가 있다. 중복된 수열은 출력하지 마라 수열은 사전순으로 출력해라 고른 수열은 비내림차순이어야 한다(오름차순, 값이 같아도 된다) 2. 문제 풀이 중복된 수열은 출력하지 마라 이를 해결하기 위해 자료구조 Set을 사용할 예정이다. 하지만..
체크 예외 & 언체크(런타임 예외) 1. 예외와 에러 에러(Error)란 메모리 부족, 시스템 오류와 같이 복구 불가능한 예외이다. 예측하기 어렵고 대응 방안도 없기 때문에 처리가 불가능하다. 반면 예외(Exception)는 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이며 이를 예측하여 예외처리가 가능하다. 예외(Exception)는 체크 예외와 언체크 예외로 두 가지로 구분된다. 2. 체크 예외 애플리케이션 로직에서의 최상위 예외이며 RuntimeException을 상속받지 않는 예외들이다. 컴파일 시점에서 체크가 가능하며 개발자의 실수에도 IDE에서 확인이 가능하다. 예외는 try-catch로 예외를 처리하거나 throws로 던지지 않으면 컴파일 오류가 발생한다. 예를 들어 Controller-Service-Repository에서..
SQLD 정리 데이터 모델링의 이해 모델링의 특징 추상화, 단순화, 명확화 모델링의 세 가지 관점 데이터 관점 프로세스 관점 데이터와 프로세스의 상관 관점 모델링의 3단계 개념적 데이터 모델링 : 추상화 레벨이 가장 높음, 업무 중심적 논리적 데이터 모델링 : 재사용성이 가장 높음, 데이터베이스 모델링의 최종 완료 상태, 정규화, 참조 무결성 규칙정의 등.. 물리적 데이터 모델링 : 실제 데이터 베이스, 성능 가용성 3단계 스키마 구조 외부 스키마 : View, 사용자 관점 개념 스키마 : 모든 사용자 관점 내부 스키마 : 물리적인 저장 구조 ERD 작성 순서 엔터티 도출 엔터티 배치 관계 설정 관계명 기입 참여도 기입 필수/선택 기입 엔터티의 분류(발생 시점) 기본 엔터티 : 독립적으로 생성 중심 엔터티 : 기본 엔..
[Java] 2023번: 신기한 소수 🌎 Link : https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 💡 접근 방법 1. 문제 이해 7331은 신기한 소수이다. 이유는 7 / 73 / 733 / 7331 이 모두 소수이기 때문이다. 그러면 앞에서부터 뒤에 숫자를 붙여주면서 소수인 경우 백트레킹을 돌려주면 되는 문제다. 우선 소수를 구하는 코드는 여러 가지의 방법이 있다. 여기서 나는 제곱근을 이용해서 소수를 구 할 생각이다. private static boolean is..
필터(Filter), 인터셉터(Interceptor) Spring은 공통 관심사를 처리해 중복 코드를 줄이는 여러 기능을 제공한다. 그중 필터, 인터셉터에 대해서 알아보려고 한다. 1. 필터(Filter) 필터는 클라이언트의 요청이 서블릿에 도달하기 전, 그리고 서블릿에서 응답이 클라이언트에게 돌아가기 전에 실행되며 미리 정의한 url 패턴에 맞는 모든 요청에 대한 부가작업을 처리하는 기능을 제공한다. 스프링이 아닌 서블릿에서 제공하는 기술이다. public interface Filter { public default void init(FilterConfig filterConfig) throws ServletException {} public void doFilter(ServletRequest request, ServletResponse response, ..