분류 전체보기 140

[ODOQ] 정적 IP 주소 할당 방식, 동적 IP 주소 할당 방식

[One Day One Question]정적, 동적 IP 주소 할당 방식의 차이점에 대해서 설명해 주세요.1. 정적 IP 주소 할당 (Static IP Address)고정된 IP 주소를 수동으로 설정하여 특정 기기에 영구적으로 할당하는 방식입니다.변경되지 않으며, 네트워크 관리자나 사용자에 의해 직접 설정됩니다.특징:항상 동일한 IP 주소를 유지합니다.서버, CCTV, 원격 접속이 필요한 장치 등에 사용됩니다.설정이 복잡할 수 있으며, 관리가 필요합니다.보안 위험이 상대적으로 클 수 있습니다(고정된 IP가 공격 대상이 될 가능성 증가).일반적으로 추가 비용이 발생할 수 있습니다(ISP에서 별도로 제공). 2. 동적 IP 주소 할당 (Dynamic IP Address)네트워크에서 자동으로 할당되는 방식으로..

cs/ODOQ 2025.02.26

[ODOQ] NAT

[One Day One Question]NAT 기능에 대해서 설명해 주세요.NAT(Network Address Translation)는 사설 IP 주소를 공인 IP 주소로 변환하여 인터넷과 통신할 수 있도록 해주는 기술입니다. 1. 공인 IP 주소 부족 문제 해결IPv4 주소는 한정되어 있으며, 모든 장치에 공인 IP를 할당하기 어렵습니다.NAT를 사용하면 하나의 공인 IP를 여러 개의 사설 IP 주소와 공유하여 인터넷에 접속할 수 있습니다.특히 가정, 기업, ISP(인터넷 서비스 제공업체)에서 많이 사용됩니다. 2. 보안 강화내부 네트워크의 사설 IP 주소는 외부에서 직접 접근할 수 없습니다.이는 외부 공격자가 내부 장치의 IP를 직접 알 수 없게 만들어 보안을 강화합니다.방화벽과 함께 사용하면 네트워..

cs/ODOQ 2025.02.25

[ODOQ] CSRF 공격

[One Day One Question]CSRF공격에 대해서 설명해 주세요.  CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조) 공격은 사용자가 신뢰하는 웹사이트를 대상으로, 공격자가 의도하지 않은 요청을 전송하도록 유도하는 보안 취약점입니다. 즉, 사용자의 권한을 악용하여 원치 않는 행동을 수행하게 만드는 공격 방식입니다. 1. CSRF 공격공격자는 사용자가 이미 로그인된 웹사이트에서 특정 요청을 실행하도록 조작합니다.예를 들어, 사용자가 은행 웹사이트에 로그인한 상태에서 공격자가 만든 악성 링크를 클릭하면, 공격자가 설정한 계좌로 돈을 이체하는 요청이 사용자 모르게 실행될 수 있습니다.이 공격은 사용자의 인증 정보(세션 쿠키, 토큰 등) 를 악용하여 실행됩니다.  2...

cs/ODOQ 2025.02.21

[백준 / Java] 14719 빗물

문제https://www.acmicpc.net/problem/14719  문제 개요2차원 세계에서 블록이 쌓여 있을 때, 비가 온 후 고일 수 있는 빗물의 총량을 구하는 문제입니다. 각 블록의 높이가 주어지며, 블록 사이에 움푹 파인 공간이 있으면 빗물이 고입니다. 고일 수 있는 물의 총량을 계산하여 출력하면 됩니다.  문제 접근 방법각 위치에서 고일 수 있는 빗물 계산특정 위치 i에서 고일 수 있는 빗물의 양은"해당 위치에서 왼쪽에서 가장 높은 블록과 오른쪽에서 가장 높은 블록 중 작은 값"에서 현재 블록의 높이를 뺀 값입니다.즉, water[i]=min(leftMax[i],rightMax[i])−height[i] 이를 위해, 각 위치에서 왼쪽과 오른쪽의 최대 높이를 미리 구해둡니다.왼쪽 최대 높이(l..

문제/백준 2025.02.21

[백준 / Java] 2467 용액

문제https://www.acmicpc.net/problem/2467  문제 개요산성 용액(양수)과 알칼리성 용액(음수)이 주어졌을 때, 두 개의 용액을 혼합하여 특성값이 0에 가장 가까운 조합을 찾는 문제입니다. 두 용액의 특성값을 더한 값이 0에 가까울수록 좋은 조합이며, 이를 만족하는 두 용액을 오름차순으로 출력해야 합니다. 용액들의 특성값은 정렬된 상태로 주어지므로, 이를 활용하여 효율적인 탐색이 가능합니다.  문제 접근 방법이 문제는 "두 수의 합이 특정 값에 가장 가까운 쌍을 찾는 문제"로, 투 포인터(Two Pointer) 알고리즘을 활용하여 해결할 수 있습니다.해결 방법투 포인터 사용입력된 용액 배열이 오름차순 정렬된 상태이므로, 양 끝에서 시작하는 두 개의 포인터(left, right)를..

문제/백준 2025.02.21

[프로그래머스 / MySQL] 업그레이드 할 수 없는 아이템 구하기

문제https://school.programmers.co.kr/learn/courses/30/lessons/273712 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ❌ 처음 작성한 쿼리SELECT item_id, item_name, rarity FROM item_info WHERE item_id NOT IN ( SELECT DISTINCT parent_item_id FROM item_tree )order by item_id desc;이 쿼리에서 parent_item_id를 SELECT했는데, NULL 값이 포함될 수 있음parent_item_id는 ROOT 아이템에 대해 NULL 값을 ..

[MySQL] JOIN, LEFT JOIN, RIGHT JOIN

💡 JOIN, LEFT JOIN, RIGHT JOIN 개념SQL에서 JOIN은 여러 개의 테이블을 조합하여 하나의 결과 집합을 만드는 데 사용됨각 JOIN의 차이를 이해하려면, 기준 테이블(LEFT)과 조인할 테이블(RIGHT) 개념을 알아야 함 1. INNER JOIN (기본 JOIN)두 테이블에서 일치하는 데이터만 가져옴일치하지 않는 데이터는 결과에서 제외됨SELECT A.컬럼명, B.컬럼명FROM AINNER JOIN B ON A.공통컬럼 = B.공통컬럼; INNER는 생략 가능 (JOIN = INNER JOIN) 예시SELECT employees.name, departments.dept_nameFROM employeesJOIN departments ON employees.dept_id = dep..

언어/MySQL 2025.02.21

[백준] 20437 문자열 게임 2 - Java

문제https://www.acmicpc.net/problem/20437 문제 개요이 문제는 주어진 문자열에서 특정 문자가 정확히 K번 등장하는 연속 문자열의 길이를 구하는 문제입니다. 두 가지 조건에 따라 계산해야 합니다특정 문자가 정확히 K번 등장하는 가장 짧은 연속 문자열의 길이특정 문자가 정확히 K번 등장하며, 문자열의 시작과 끝 문자가 같은 가장 긴 연속 문자열의 길이 접근 방법이 문제는 해시맵과 리스트를 활용한 인덱스 추적 방식으로 해결하였습니다.문자 인덱스 맵 생성문자열의 각 문자를 순회하며 해당 문자가 등장한 위치(인덱스)를 저장합니다.이를 위해 HashMap> 자료구조를 사용하였고, 각 문자마다 등장한 인덱스 리스트를 만들어 빠르게 참조할 수 있도록 하였습니다.K번 등장하는 문자열의 길이 ..

문제/백준 2025.01.27

[프로그래머스] 자동차 대여 기록에서 장기/단기 대여 구분하기 - MySQL

문제https://school.programmers.co.kr/learn/courses/30/lessons/151138 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 개요자동차 대여 기록 테이블에서 대여 시작일이 2022년 9월에 속하는 데이터를 가져오고, 대여 기간에 따라 '장기 대여' 또는 '단기 대여'로 구분해야 합니다. case구문을 활용하여 해결할 수 있습니다.코드select history_id, car_id, date_format(start_date, "%Y-%m-%d") as start_date, date_format(end_date, "%Y-%m-%d") a..

[MySQL] case 구문

MySQL에서 CASE는 조건에 따라 다른 결과를 반환할 수 있도록 해주는 제어문(Conditional Statement)입니다. SQL에서 조건부 로직을 처리할 때 사용하며, 프로그래밍 언어의 if-else 문과 유사한 역할을 합니다. 주로 SELECT, UPDATE, 또는 다른 SQL 문 안에서 활용됩니다. CASE 문의 기본 문법1. CASE WHEN 형태CASE WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2 ... ELSE 기본값END 2. CASE (값 기반) 형태CASE 값 WHEN 값1 THEN 결과1 WHEN 값2 THEN 결과2 ... ELSE 기본값END  CASE 문의 구성요소CASE: 조건부 로직을 시작하는 키워드입니다...

언어/MySQL 2025.01.25