본문 바로가기

전체 글

(135)
Every CS - Network 04 - HTTP 1. HTTP 개요HTTP란 무엇인가?HTTP(HyperText Transfer Protocol)이란 웹 상에서 클라이언트와 서버 간에 데이터를 주고받기 위한 프로토콜주로 웹 브라우저(클라이언트)가 웹 서버에 요청을 본내고, 서버가 그에 대한 응답을 반환하는 방식으로 동작한다.역할데이터 전송 : 텍스트, 이미지, 동영상 등 다양한 형태의 데이터를 전송상태 관리 : 클라이언트와 서버 간의 상호작용 상태를 관리표준화 : 웹 통신의 표준을 제공하여 다양한 기기와 애플리케이션 간의 호환성 보장클라이언트-서버 모델클라이언트요청을 보내는 주체 (보통 웹 브라우저)서버요청을 받아 처리하고 응답을 보내는 주체 (웹 서버, 개발자의 백엔드서버)동작 방식클라이언트가 특정 서버에 특정 리소스 요청서버가 요청을 처리하고 적절..
[React] 리액트에서 TailwindCSS 사용하기 1. Tailwind CSS란?Tailwind CSS는 유틸리티 중심의 CSS 프레임워크로, 개발자가 신속하게 사용자 인터페이스를 구축할 수 있도록 돕습니다. 전통적인 CSS 프레임워크와 달리, Tailwind는 사전 정의된 클래스를 제공하여 개발자가 원하는 스타일을 조합할 수 있게 합니다. 이 접근 방식은 코드의 재사용성을 높이고, 스타일링을 일관되게 유지하는 데 유리합니다. Tailwind는 반응형 디자인, 다크 모드, 커스터마이징이 용이하며, JIT(Just-in-Time) 모드를 통해 성능을 최적화할 수 있습니다. 이를 통해 복잡한 UI를 효율적으로 설계하고, 유지 관리하기 쉬운 코드를 작성할 수 있습니다.2. Tailwind CSS 특징유틸리티 클래스: Tailwind는 다양한 유틸리티 클래스를..
개발자 필수템 - github 사용하기 03. github 유지 보수 이슈 관리 및 관련 개념 정리1. 이슈 관리이슈 관리는 프로젝트 진행 중 발생하는 문제나 요청을 체계적으로 관리하는 프로세스이다. 각 이슈는 고유한 ID와 상태(열림, 닫힘 등)를 가지며, 팀원들은 이슈를 할당받아 해결할 수 있다. 이슈 관리는 개발팀 간의 소통을 개선하고, 프로젝트의 진행 상황을 투명하게 파악하는 데 도움을 준다.주요 기능이슈 생성: 새로운 문제나 요청을 기록하고 우선순위를 설정.이슈 할당: 특정 팀원에게 이슈를 할당하여 책임을 명확히 함.이슈 상태 변경: 이슈의 진행 상황을 업데이트 (예: 대기 중, 진행 중, 해결됨 등).이슈 코멘트: 팀원 간의 의견 공유 및 진행 상황에 대한 논의.2. 충돌 관리충돌 관리는 여러 개발자가 동일한 파일을 수정했을 때 발생하는 문제를 해결하는 과정이다..
개발자 필수템 - github 사용하기 02. github 개념 익히기 GitHub 용어와 개념 정리 및 원격과 로컬 연동하기1. 개념 정리1.1 레포지토리란?1.1.1 Local Repository로컬 레포지토리는 사용자의 컴퓨터에 저장된 Git 저장소로, 개발자는 여기에서 코드를 작성하고 테스트할 수 있다. 모든 작업은 로컬에서 이루어지며, 나중에 원격 저장소에 푸시할 수 있다.1.1.2 Remote Repository원격 레포지토리는 GitHub와 같은 서버에 저장된 저장소로, 다른 개발자와의 협업을 가능하게 한다. 원격 저장소에 푸시하면 팀원들과 변경 사항을 공유할 수 있다.1.2 버전이란?버전은 코드의 특정 상태를 나타내며, Git에서는 각 버전이 고유한 커밋 해시를 가진다. 이를 통해 언제든지 이전 상태로 되돌릴 수 있고, 코드 변경 이력을 관리할 수 있다.1.3..
개발자 필수템 - github 사용하기 01. git bash Git이란사용자 프로젝트의 버전을 관리하는 시스템으로 소스 코드 및 파일의 변경 이력을 관리하기 편하여 널리 사용된다.Git을 사용하는 이유버전 관리: Git은 프로젝트의 모든 버전을 기록하므로, 이전 상태로 되돌릴 수 있다. 이로 인해 개발자는 실수나 오류를 쉽게 수정할 수 있다.협업: 여러 개발자가 동시에 작업할 수 있도록 지원하며, 각자의 변경 사항을 통합하기 쉽게 만든다. 이를 통해 팀워크가 향상된다.백업: Git은 모든 버전의 데이터를 로컬 및 원격 저장소에 저장하여 데이터 유실을 방지한다. 코드가 손실되더라도 언제든지 복원할 수 있다.브랜칭과 머지: Git은 브랜치를 쉽게 생성하고 관리할 수 있도록 하여, 실험적인 작업을 독립적으로 진행할 수 있다. 또한, 작업이 완료되면 쉽게 통합할 수 있다..
Baekjoon 1194. 달이 차오른다, 가자. import sys;input = sys.stdin.readlinefrom collections import deque as dqn, m = map(int, input().split())arr = [list(map(str, input().rstrip())) for _ in range(n)]for i in range(n): for j in range(m): if arr[i][j] == '0': sx, sy = i, j arr[i][j] = '.'def bfs(x, y): q = dq([(x, y, 0, 0)]) visit = [[[0] * (1
Baekjoon 32069. 가로등 / Python 문제 링크 문제 설명수직선 도로 위에 여러 개의 가로등이 위치하고 있습니다.각 위치의 어두운 정도를 그 위치로부터 가장 가까운 가로등까지의 거리로 정의합니다.제일 밝은 곳부터 어두운 정도를 k개 출력하는 문제코드 설명가로등이 k보다 많으면 0을 k번 출력하고 종료가로등에 대해서, 거리를 1씩 늘려가면서 가로등과의 거리 계산import sys; input = sys.stdin.readlinel, n, k = map(int, input().split())arr = list(map(int, input().split()))# 만약 가로등의 개수가 k 이상이면, 어두운 정도는 항상 0이 최소 k개 이상이다.if n >= k: # 모든 어두운 정도는 0이기 때문에 0을 k번 출력하고 종료 print('0..
Baekjoon 11265. 끝나지 않는 파티 / Python https://www.acmicpc.net/problem/11265문제설명문제는 놀이동산 "민호월드"의 여러 파티장에서 일방통행 도로를 통해 다른 파티장으로 이동할 때, 특정 시간 내에 도착할 수 있는지를 판단하는 것입니다.각 파티장은 다른 모든 파티장과 직접적으로 연결된 도로가 있습니다.각 도로는 일방통행이며, 각 도로를 통해 이동하는 시간이 주어집니다.M개의 쿼리에서 출발 파티장, 도착 파티장, 그리고 시간 제한이 주어지며, 주어진 시간 내에 도착할 수 있는지를 판단해야 합니다.코드 설명사용된 알고리즘 : 다익스트라결과 리스트 res를 만들어 중복을 관리한다.이미 계산된 결과를 res 리스트에서 바로 사용하기 위함이다.처음 계산하는 값이라면,다익스트라 함수를 통해 res에 최단 경로를 계산한다.우선순..
02. 04 파이썬 기초 04 - 자료구조 02 비시퀀스 데이터 구조(세트, 딕셔너리) 비시퀀스 데이터 구조1. 세트세트 메서드s.add(x) : 세트에 x를 추가한다. 이미 x가 있다면 변화가 없다.sample = {'a', 'b', 'c', 1, 2, 3}sample.add(4)print(sample) # {'c', 2, 3, 1, 'b', 'a', 4}sample.add('a')print(sample) # {'c', 2, 3, 1, 'b', 'a', 4}s.clear() : 세트의 모든 항목을 제거한다.sample = {'a', 'b', 'c', 1, 2, 3}sample.clear()print(sample) # set()s.remove(x) : 세트에서 항목 x를 제거한다.x가 없으면 오류를 발생한다.sample = {'a', 'b', 'c', 1, 2, 3}sample...
02. 03 파이썬 기초 03 - 자료구조 01 시퀀스 데이터 구조(문자열, 리스트) 시퀀스 데이터 구조1. 문자열문자열 조회, 탐색 메서드s.find(x, i) : 문자열의 i번째 인덱스 부터 시작해서 x가 처음으로 나오는 위치를 반환한다.없으면, -1을 반환한다.i는 입력하지 않아도 되고 0 이 기본값으로 설정된다.sample = 'alphabet'find_a = sample.find('a')print(find_a) # 0find_next_a = sample.find('a', 3)print(find_next_a) # 4find_k = sample.find('k')print(find_k) # -1s.index(x, i) : 문자열의 i번째 인덱스 부터 시작해서 x가 처음으로 나오는 위치를 반환한다.없으면, 오류가 발생한다.i는 입력하지 않아도 되고 0 이 기본값으로 설정된다.sam..