전체 글 99

[네트워크] HTTP 상태 코드

HTTP 상태 코드클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다.1xx (Informational): 요청이 수신되어 처리 중2xx (Successful): 요청 정상 처리3xx (Redirection): 요청을 완료하려면 추가 행동이 필요4xx (Client Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함💡 모르는 상태 코드가 나온 경우 (클라이언트가 인식할 수 없는 상태코드를 서버가 반환한 경우) 클라이언트는 상위 상태코드로 해석해서 처리하므로 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 된다. (ex. 299 → 2xx → Successful) ..

CS/네트워크 2025.09.05

[Algorithm/BOJ] 1463 : 1로 만들기.py

문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 풀이 #1각 숫자 인덱스에 연산 횟수를 저장하여 조회할 수 있도록 하였다. 그러나 이 풀이는 Bottom-up 방식으로, for문을 통해 1부터 n까지 모든 값을 계산하기 때문에 실제로 n의 최소 연산 횟수를 구하는 데 불필요한 값들까지 모두 연산하게 된다. 그리고 파이썬에서 list..

[Algorithm/BOJ] 16236 : 아기 상어.py

문제NxN 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1x1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다.아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다.아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다.아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다.더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마 상어에게..

[네트워크] HTTP 설계

클라이언트에서 서버로 데이터를 전송하는 방식은 크게 쿼리 파라미터, 메시지 바디를 통한 데이터 전송 방식으로 나뉜다. 먼저, 쿼리 파라미터를 통한 데이터 전송은 주로 GET 방식을 사용하고 정렬 또는 필터(ex. 검색어)에 많이 사용된다. 메시지 바디를 통한 데이터 전송 방식은 POST, PUT, PATCH 방식을 사용하며, 회원가입, 상품 주문, 리소스 등록/변경 등에 사용된다.클라이언트에서 서버로 데이터를 전송하는 상황은 네 가지로 나눌 수 있다.1. 정적 데이터 조회 GET을 통하여 이미지, 정적 텍스트 문서를 조회할 때 사용되며, 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능하다.2. 동적 데이터 조회 GET 방식으로 쿼리 파라미터를 통해 데이터를 전달하고, 주로 검색하거나 게시..

CS/네트워크 2025.08.21

[JAVA] 기본형과 참조형

01. 변수의 데이터 타입기본형 (Primitive Type)변수에 사용할 값을 직접 넣을 수 있는 데이터 타입니다.ex. int, long, double, boolean기본형 변수에는 직접 사용할 수 있는 값이 들어있다.10, 20은 기본형으로, 값을 변수에 담고 해당 값을 바로 사용할 수 있다.cf. 참조형은 실제 사용하는 값을 변수에 담는 것이 아니다.값을 그대로 계산에 사용할 수 있다.참조형 (Reference Type)데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입이다.객체 또는 배열에 사용된다.객체: . (dot) 을 통해서 메모리 상에 생성된 객체를 찾아가야 사용할 수 있다.배열: [ ] 를 통해서 메모리 상에 생성된 배열을 찾아가야 사용할 수 있다.ex. Student stude..

Java 2025.08.19

[Algorithm/BOJ] 21608 : 상어 초등학교.py

문제상어 초등학교에는 교실이 하나 있고, 교실은 NxN 크기의 격자로 나타낼 수 있다.교실은 NxN 크기의 격자학생 수는 N^2명학생은 1번부터 N^2번까지 번호가 매겨져 있고, (r,c)는 r행 c열을 의미한다. 교실의 가장 왼쪽 윗 칸은 (1,1)이고 가장 오른쪽 아랫칸은 (N,N)이다선생님은 학생의 순서를 정했고, 각 학생이 좋아하는 학생 4명도 모두 조사했다.이제 다음과 같은 규칙을 이용해 정해진 순서대로 학생의 자리를 정하려고 한다.한 칸에는 학생 한 명의 자리만 있을 수 있고, |r1 - r2| + |c1 - c2| = 1 을 만족하는 두 칸이 (r1, c1)과 (r2, c2)을 인접하다고 합니다.비어있는 칸 중에서 좋아하는 학생이 인접한 칸에 가장 많은 칸으로 자리를 정한다.1을 만족하는 칸..

[네트워크] HTTP 프로토콜

HTTPHyperText Transfer Protocol로, 하이퍼텍스트를 통해서 연결할 수 있는 HTML을 전송하는 프로토콜을 뜻한다. 현재는 모든 것을 HTTP 메시지에 담을 수 있다. HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML (API) 등 거의 모든 형태의 데이터를 전송 가능하다. 서버 간에 데이터를 주고 받을 때도 대부분 HTTP를 이용한다.HTTP 역사[1991년] HTTP/0.9 : GET 메서드만 지원, HTTP 헤더 X[1996년] HTTP/1.0 : 메서드, 헤더 추가[1997년] HTTP/1.1 : 가장 많이 사용, 우리에게 가장 중요한 버전[1997년] RFC2068[1999년] RFC2616[2014년] RFC7230 ~ 7235[2015년] HTTP..

CS/네트워크 2025.08.17

[네트워크] 인터넷 네트워크와 URI

인터넷에서 컴퓨터 둘은 어떻게 통신할까?클라이언트와 서버가 인터넷 망을 통해 Hello World 라는 메시지를 보내야 하는데 인터넷은 단순하지 않다. 수많은 중간 노드를 거쳐서 메시지가 전달되는 것이다. 그렇다면 어떤 규칙으로 전달되는 것일까? 이를 이해하기 위해서는 IP(인터넷 프로토콜)에 대해서 학습해야 한다.복잡한 망에서 메시지를 보내려면 최소한의 규칙이 있어야 한다.이는 IP 주소를 통해서 가능해진다.먼저 클라이언트와 서버는는 IP 주소를 부여 받아야 한다. (ex. 100.100.100.1)여기서 인터넷 프로토콜은 지정한 IP 주소에 메시지를 전달할 수 있도록 정해놓은 규칙이다.그래서 패킷이라는 통신 단위로 데이터를 전달한다.메시지를 그냥 보내는 것이 아니라 IP 패킷이라는 규칙에 맞춰 보낸다..

CS/네트워크 2025.08.16

[Algorithm/BOJ] 14503 : 로봇 청소기.py

문제 입력출력로봇 청소기가 작동을 시작한 후 작동을 멈출 때까지 청소하는 칸의 개수를 출력한다.내 풀이로봇 청소기는 N×M 크기의 맵에서 청소를 수행한다.각 칸은 벽(1) 또는 빈 칸(0)으로 구분된다.로봇의 행동 규칙:현재 위치를 청소한다.왼쪽부터 차례대로 4방향을 탐색하며, 청소하지 않은 칸이 있으면 이동한다.4방향 모두 청소가 완료되면 후진을 시도한다.후진이 불가능하면 작동을 멈춘다.DFS(깊이 우선 탐색)를 사용하면, 재귀적으로 청소와 이동을 구현할 수 있다.n, m = map(int, input().split()) # 세로, 가로r, c, d = map(int, input().split())graph = []result = 1for _ in range(n): graph.append(lis..

twMerge 커스텀 클래스 스타일 충돌 해결

약속 프로젝트에서는 Tailwind CSS를 활용해 공통 컴포넌트를 스타일링하며, twMerge, clsx, 그리고 cva를 조합하여 variant 기반 스타일링과 클래스 중복 제거를 효율적으로 관리하고 있다. 이 중 twMerge는 Tailwind 클래스 간 충돌을 감지하고, 우선순위에 따라 가장 마지막에 정의된 클래스를 병합해주는 유틸리티로, 다크모드 및 반응형 클래스 등 다양한 변형이 많은 Tailwind 환경에서 유용하게 활용된다. 해당 프로젝트에서는 디자인 시스템에 기반해 다음과 같이 text-head1, text-head2 등의 커스텀 타이포그래피 유틸 클래스를 정의하여 사용하고 있다. --text-head1--line-height: 52px; --text-head1--letter-spac..