전체 글 744

[Effective Java : Item 86] Serializable을 구현할지는 신중히 결정하라

개요 특정 클래스의 인스턴스를 직렬화하고 싶다면 Serializable을 구현하도록 클래스 선언에 implements Serializable만 붙이면 된다. Serializable 내부적으로 구현이 강제되는 메서드 또한 존재하지 않아 쉽게 적용할 수 있다고 생각될 수 있으나, 실상은 직렬화를 구현한다는 것은 훨씬 복잡하고 값비싼 일이다.  Serializable 구현 시 주의할 점 1. 릴리스한 뒤에는 수정하기 어렵다.Serializable을 구현하면 직렬화된 바이트 스트림 인코딩도 하나의 공개 API가 되는 셈이다. 따라서 릴리스가 된 뒤에는 이 직렬화 형태도 영원히 지원해야 한다. 또한 커스텀 직렬화 형태를 사용하지 않고 자바의 기본 직렬화를 사용한다면 최초 직렬화 당시 클래스의 내부 구현 방식에 묶..

Backend/Java 2024.05.08

[🥈2 / 백준 17103 / 파이썬] 골드바흐 파티션

https://www.acmicpc.net/problem/17103  문제골드바흐의 추측: 2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다. 짝수 N을 두 소수의 합으로 나타내는 표현을 골드바흐 파티션이라고 한다. 짝수 N이 주어졌을 때, 골드바흐 파티션의 개수를 구해보자. 두 소수의 순서만 다른 것은 같은 파티션이다. 입력첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2  출력각각의 테스트 케이스마다 골드바흐 파티션의 수를 출력한다.  예제 입력5 6 8 10 12 100 예제 출력1 1 2 1 6  풀이 에라토스테네스의 체로 N의 최대값 만큼 소수 목록을 구한 뒤 테스트 케이스별로 순회하며 골드바흐 파티션..

[Lv.3 / 프로그래머스 / SQL] 물고기 종류 별 대어 찾기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    풀이 종류별로 가장 큰 물고기의 길이와 그 물고기의 ID를 출력해야 한다.  물고기의 ID를 출력해야 하는 부분 때문에 단순히 집계 함수로 문제를 해결할 수 없다.따라서 물고기의 종류별로 가장 긴 실제 레코드를 서브쿼리로 구한 뒤 메인 쿼리와 비교하여 해결해야 한다.NAME을 출력해야 하는 부분은 INNER JOIN을 통해 해결할 수 있다. SELECT ID, FISH_NAME, LENGTHFROM FISH_INFO AS FIINNER JOIN FISH_NAME_INFO AS FN..

[Lv.1 / 프로그래머스 / SQL] 특정 형질을 가지는 대장균 찾기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 비트연산자를 통해 보유 형질 조건을 판별해야 한다. 비트연산을 수행할 때, 세 번째 형질을 나타내는 비트는 100인데, 이를 십진수로 표현하면 3이 아니라 4임에 유의하자. SELECT COUNT(1) AS COUNTFROM ECOLI_DATAWHERE (GENOTYPE & 1 OR GENOTYPE & 4) AND !(GENOTYPE & 2)

[Lv.2 / 프로그래머스 / SQL] 분기별 분화된 대장균의 개체 수 구하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 분기별 대장균 개체의 수를 구해야 한다. CASE문과 집계 함수인 COUNT를 이용해 조건별로 분기별 대장균 개체의 수를 구할 수 있다.  SELECT CASE WHEN MONTH(DIFFERENTIATION_DATE)

[Lv.2 / 프로그래머스 / SQL] 연도별 대장균 크기의 편차 구하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 각 연도별 최대 대장균 크기를 구해, 현재 연도 ID의 대장균 크기 값을 뺀 것을 YEAR_DEV로 출력해야 한다.현재 연도의 최대 대장균 크기를 서브쿼리로 구해 현재 대장균 크기를 빼면 구할 수 있다. SELECT YEAR(DIFFERENTIATION_DATE) AS YEAR, ( SELECT MAX(ED2.SIZE_OF_COLONY) FROM ECOLI_DATA AS ED2 WHERE YEAR ..

[Lv.2 / 프로그래머스 / SQL] 월별 잡은 물고기 수 구하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 연도(year)와 일(day) 상관 없이 월별로 잡은 물고기의 수를 그룹화하여 출력해야 한다.MONTH 함수를 이용하여 월만 뽑아낸 컬럼인  MONTH 별로 그룹화한 뒤, 집계 함수 COUNT를 사용하여 물고기의 합계를 구한다. SELECT COUNT(*) AS FISH_COUNT, MONTH(TIME) AS MONTHFROM FISH_INFOGROUP BY MONTHORDER BY MONTH

[Lv.1 / 프로그래머스 / SQL] 잡은 물고기의 평균 길이 구하기

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   풀이 잡은 물고기의 평균 길이를 구해야 한다. AVG 함수로 평균 길이를 구할 수 있고, ROUND 함수를 통해 소수점의 반올림을 할 수 있다. 길이가 NULL인 물고기는 길이를 10으로 취급해야 하므로 NULL인 row를 특정 값으로 처리해주는 IFNULL 함수를 사용해야 한다.  SELECT ROUND(AVG(IFNULL(LENGTH, 10)), 2) AS AVERAGE_LENGTHFROM FISH_INFO

[Lv.3 / 프로그래머스 / SQL] 부서별 평균 연봉 조회하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) 부서의 고유한 아이디인 DEPT_ID를 GROUP BY로 묶어 평균 연봉을 조회한다. 이 때, 부서의 영문 이름을 출력해야 하므로 HR_DEPARTMENT와 JOIN 하여 이름을 구해서 같이 출력해야 한다. SELECT E.DEPT_ID, DEPT_NAME_EN, ROUND(AVG(SAL)) AS AVG_SAL FROM HR_EMPLOYEES AS E INNER JOIN HR_DEPARTMENT AS D ON E.DEPT_ID = D.DEPT_ID GROUP BY E.DEPT_ID ORDE..

[Lv.2 / 프로그래머스 / SQL] 물고기 종류 별 잡은 수 구하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) 물고기의 종류별로 개수를 출력해야 한다. FISH_TYPE 대신 FISH_NAME을 출력해야 하므로 JOIN을 통해 해결해야 한다. SELECT COUNT(*) AS FISH_COUNT, FISH_NAME FROM FISH_INFO LEFT JOIN FISH_NAME_INFO ON FISH_INFO.FISH_TYPE = FISH_NAME_INFO.FISH_TYPE GROUP BY FISH_NAME_INFO.FISH_NAME ORDER BY FISH_COUNT DESC

반응형