CS(ComputerScience) 18

CS(Computer Science) - JAVA

1. Garbage Collection(가비지 컬렉션)이란 무엇인가요? 자바의 GC는 어떻게 동작하나요?1-1. GC의 절차적 동작 원리와 알고리즘 종류가비지 컬렉션은 자바에서 더 이상 사용되지 않는 객체를 자동으로 메모리에서 해제하는 기능이다. 개발자가 직접 메모리 해제를 관리하지 않아도 되기 때문에 메모리 누수와 잘못된 포인터 접근 같은 오류를 줄여준다.작동 원리를 단계별로 이해하면 쉽다.첫째, 도달 가능성 분석(Reachability Analysis): GC는 객체가 여전히 참조되고 있는지 확인한다. 루트 객체(GC Root)에서 시작해 참조 그래프를 탐색하며 연결되지 않은 객체를 찾는다.둘째, Mark 단계: 참조가 남아있는 객체를 표시한다.셋째, Sweep 단계: 표시되지 않은 객체를 메모리..

CS(ComputerScience) 2025.08.11

인터페이스란?

1. 인터페이스의 정의"인터페이스"란 두 주체가 상호작용하기 위해 약속한 규약과 이를 제공하는 접점을 뜻한다.규약은 외부에 공개되지만, 내부 구현은 숨겨 캡슐화를 유지하며, 이를 통해 느슨한 결합을 가능하게 한다.2. 인터페이스의 핵심 요소경계(Boundary): 서로 다른 주체(객체, 시스템, 사람 등)의 연결 지점규약(Contract): 어떤 기능을 어떻게 사용할지에 대한 약속구현과 분리: 내부 동작을 몰라도 규약만 알면 사용 가능3. 인터페이스 예시3-1. 소프트웨어Java interface: 객체 ↔ 객체 간 메서드 규약REST API: 클라이언트 ↔ 서버 간 HTTP 기반 데이터 교환 규약GUI: 사람 ↔ 프로그램 간 그래픽 상호작용 규약CLI: 사람 ↔ 프로그램 간 명령어 기반 상호작용 규약3..

프로그래머스 Oracle 2단계 문제 - 중복 제거하기

1. 문제 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.2. 답 SELECT COUNT(DISTINCT NAME) AS COUNT FROM ANIMAL_INS WHERE NAME IS NOT NULL3. 설명3-1. DISTINCT란? DISTINCT는 SELECT 결과에서 중복된 행(row)을 제거해주는 키워드입니다.3-2. 기본 문법 SELECT DISTINCT 컬럼1, 컬럼2, ... FROM 테이블명; 지정한 컬럼들의 조합이 완전히 같은 행은 하나로 처리됩니다.3-3. 예제 1: 단일 컬럼에서 DISTINCT SELECT DISTINCT NAME FROM ANIMAL..

프로그래머스 Oracle 2단계 문제 - 카테고리 별 상품 개수 구하기

1. 문제PRODUCT 테이블에서 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요.2. 답SELECT SUBSTR(PRODUCT_CODE, 1,2) AS CATEGORY, COUNT(PRODUCT_CODE) AS PRODUCTSFROM PRODUCTGROUP BY SUBSTR(PRODUCT_CODE, 1,2)ORDER BY CATEGORY;3. 설명Tip. SUBSTR(string, start_position [, length])string: 원본 문자열start_position: 추출을 시작할 위치 (1부터 시작)length ([]는 선택적인(optional) 항목이라는 표시) : 몇 글..

프로그래머스 Oracle 2단계 문제 - 성분으로 구분한 아이스크림 총 주문량

1. 문제상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요.2. 답SELECT I.INGREDIENT_TYPE, sum(F.TOTAL_ORDER) as TOTAL_ORDERFROM FIRST_HALF FJOIN ICECREAM_INFO ION F.FLAVOR = I.FLAVORGROUP BY I.INGREDIENT_TYPEORDER BY I.INGREDIENT_TYPE DESC, TOTAL_ORDER DESC;3. 설명Tip. SELECT에서 집계 함수(예: SUM, AVG, COUNT 등)를 사용한 컬럼은 더 이상 원래 테이블의 컬럼명으로는 사..

프로그래머스 Oracle 2단계 문제- 자동차 평균 대여 기간 구하기

1. 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.2. 답 SELECT CAR_ID, TO_CHAR(ROUND(AVG(END_DATE - START_DATE + 1), 1), 'FM99990.0') AS AVERAGE_DURATION FROM CAR_RENTAL_COMPANY_RENTAL_HISTO..

프로그래머스(Oracle) 1단계 - 최댓값 구하기

1. 문제가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.2. 답SELECT DATETIME AS 시간FROM ANIMAL_INSORDER BY DATETIME DESCFETCH FIRST 1 ROWS ONLY;3. 설명3-1. FETCH FIRST n ROWS ONLY"처음부터 n개 행만 출력하라"는 뜻입니다.문법SELECT 컬럼명FROM 테이블명ORDER BY 기준컬럼FETCH FIRST n ROWS ONLY;의미ORDER BY로 정렬된 결과에서 처음부터 상위 n개 행만 추출합니다.정렬 기준이 반드시 있어야 의미가 있습니다.TIP. OFFSET m ROWS FETCH NEXT n ROWS ONLY"m번째 이후부터 n개 행을 출력하라"는 뜻입니다.문법SELECT 컬럼명FRO..

프로그래머스(Oracle) 1단계 - 12세 이하인 여자 환자 목록 출력하기

1. 문제PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.2. 답SELECT PT_NAME, PT_NO, GEND_CD, AGE, NVL(TLNO, 'NONE') AS TLNOFROM PATIENTWHERE AGE 3. 설명3-1. FROM PATIENT→ 대상 테이블: 환자 정보가 담긴 PATIENT 테이블입니다.3-2. WHERE AGE → 12세 이하(AGE → 성별 코드가 여성('W')인 환자만 필터링합니다.3-3. ORDER BY AGE DESC, PT_N..

프로그래머스(Oracle) 1단계 - 평균 일일 대여 요금 구하기

1. 문제CAR_RENTAL_COMPANY_CAR 테이블에서 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요. 이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정해주세요.2. 답select round(avg(daily_fee)) as average_feefrom CAR_RENTAL_COMPANY_CARwhere car_type = 'SUV';3. 설명3-1. AVG(daily_fee)daily_fee 컬럼의 평균값을 계산하는 집계 함수입니다.3-2. ROUND(...)반올림 함수로, 소수점 이하 자리수를 조정할 수 있습니다.ROUND(AVG(daily_fee), 1) → 소수 첫째 자리까지 반올림 (예: 12..

프로그래머스(Oracle) 1단계 - 중성화 여부 파악하기

1. 문제보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요.2. 답select animal_id, name, case when sex_upon_intake like '%Neutered%' or sex_upon_intake like '%Spayed%' then 'O' else 'X' end 중성화 from ANIMAL_INS order by animal_id;3. ..