본문 바로가기

전체 글44

[백준 9935/자바] 문자열 폭발 https://www.acmicpc.net/problem/9935  문자열의 최대길이가 100만이기 때문에 문자열 메소드 replaceAll을 사용하면 메모리초과가 발생한다고 한다... ✨ 참고https://loosie.tistory.com/317  풀이스택 사용 스택에 입력받은 문자열을 한 글자씩 집어넣음스택의 크기가 폭발 문자열의 길이와 같거나 길이보다 클 경우 폭발 문자열이 포함 돼있는지 확인스택의 최상단에서 폭발 문자열 길이까지만 get 함수를 이용해 앞에서부터 차례대로 확인한다만약 폭발 문자열이 포함 돼있으면 그 길이만큼 pop 수행 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader.. 2024. 7. 3.
[백준 2606/자바] 바이러스 https://www.acmicpc.net/problem/2606  BFS에 익숙해져보려고 계속 하는데 익숙해지지가 않음더 공부해야 할 듯 ✨ 참고인접 리스트 - https://ko.wikipedia.org/wiki/%EC%9D%B8%EC%A0%91_%EB%A6%AC%EC%8A%A4%ED%8A%B8풀이BFS 및 인접 리스트 사용  📌 인접 리스트그래프 이론에서 그래프를 표현하기 위한 방법 중 하나그래프의 한 꼭짓점에서 연결되어 있는 꼭짓점들을 하나의 연결 리스트로 표현하는 방법인접 행렬에 비하여 변이 희소한 그래프에 효율적이다. 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import.. 2024. 7. 3.
[라우팅] 라우팅, 라우터, 라우팅 테이블 라우팅네트워크에서 데이터를 보낼 때 최적의 경로를 선택하는 과정요청과 응답이 빠르게 도달할 수 있도록 함라우터라는 네트워크 장치가 이를 수행 데이터는 출발지에서 목적지를 가는 동안 여러 개의 라우터를 거치며 여러 번의 라우팅을 수행함라우팅은 보통 초당 수백만번 일어남  라우터네트워크 사이에서 데이터를 전달하는 장치보통 둘 이상의 서로 다른 네트워크에 연결데이터를 목적지로 보낼때 최적의 경로를 결정하고, 경로가 결정되면 해당 경로로 데이터를 넘겨주는 일(라우팅)을 수행라우팅 테이블을 기반으로 데이터를 다음 목적지에 전달 라우팅 테이블IP 주소를 기반으로 라우터의 위치를 저장한 테이블 또는 데이터베이스다양한 네트워크에 대한 정보와 해당 네트워크에 연결하는 방법이 포함되어 있음 외부 네트워크(여러 개의 라우터.. 2024. 7. 3.
[TCP] 연결 성립과 해제 3-way HandShake연결하고자 하는 두 장치(클라이언트, 서버) 간의 논리적 접속을 성립하기 위해 사용하는 연결 확인 방식TCP/IP 프로토콜을 이용해 통신하는 응용 프로그램이 정확한 전송을 보장하기 위해 데이터 전송 전에 상대 컴퓨터와 사전에 세션을 수립함TCP 연결을 초기화 할 때 사용 클라이언트가 서버에 연결 요청 (SYN)서버가 연결 허락 (SYN + ACK)클라이언트-서버 연결 설정(ACK) 4-way HandShake데이터 송수신이 완료되고 TCP 연결을 해제하는 과정세션을 종료하기 위해 수행되는 절차 클라이언트가 서버에 종료 요청(FIN)서버가 클라이언트에게 확인 메시지(ACK)를 보내고 자신의 통신이 끝날 때까지 기다림(CLOSE_WAIT)추가로 전송할 패킷이 남아있으면 이어서 전송.. 2024. 7. 1.
[TCP] TCP/IP 4계층 + MTU, MSS, PMTUD TCP/IP  4계층데이터를 보낼 때 필요한 것송신자 주소수신자 주소오류 체크 기능 데이터를 보낼 때 4계층을 통해 보냄컴퓨터 간 패킷 통신을 위해 거쳐야 하는 계층들데이터를 올바르게 보내게끔 하는 것이 TCP IP 4계층 인터넷 상에서 데이터를 주고받을 때 쓰는 독립적인 프로토콜의 집합각 계층은 독립적임인터넷을 통해 데이터를 보낼 때 주로 TCP와 IP를 사용해서 보냄  Application LayerSMTP, HTTP/HTTPS, SSH, POP3, DNS 등 Transport LayerUDP, TCP, SCTP 등 Internet LayerIPv4, IPv6 Network Access Layer이더넷, Wi-Fi 등 Application Layer (응용 계층)최상위 계층사용자와 가장 가까움사용자 .. 2024. 7. 1.
[백준 1926/자바] 그림 https://www.acmicpc.net/problem/1926    BFS 공부✨ 참고https://velog.io/@minjoott_dev/%EB%B0%B1%EC%A4%80-1926%EB%B2%88-%EA%B7%B8%EB%A6%BC-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-java  풀이BFS를 이용하여 한 점에서 시작되는 그림의 넓이 파악그림의 경계선 마주할 때까지 함수는 끝나지 않음그림 정보 저장할 2차원 boolean 배열방문 여부를 체크할 2차원 boolean 배열BFS 실행 시 사용할 queue이중 for문을 이용하여 x, y값을 확인한 뒤,해당 좌표가 도화지에서 색칠된 부분이고 아직 방문하지 않은 위치인 경우 BFS 실행 BFS 함수좌표에 방문 표시를 한 뒤 qu.. 2024. 6. 27.
[네트워크] 토폴로지 토폴로지컴퓨터 네트워크의 요소들을 물리적으로 연결해놓은 것노드와 링크가 어떻게 구성되어 있는지 나타냄 버스 토폴로지하나의 회선에 여러 개의 노드노드 추가 및 삭제가 쉬움설치 비용 적음 장점소규모 네트워크 구축이 매우 쉬움한 노드에 장애가 발생해도 다른 노드에 영향 X단점메인 링크에 많은 트래픽이 생기면 정체 현상 발생 가능성 多 (패킷 손실율 多)메인 링크가 망가지면 큰 문제 (회선 하나에 의지하기 때문) 스타 토폴로지중앙에 있는 노드를 기반으로 연결노드 추가 및 삭제가 쉬움이더넷 LAN에서 가장 널리 사용되는 물리적 토폴로지 장점중앙 노드가 아닌 한 노드에 장애가 발생해도 다른 노드에 영향 X안정성 높음중앙노드가 아닌 한 노드에 침해가 발생했을 때 다른 노드로 확장이 어려움다른 노드로 가려면 무조건 중.. 2024. 6. 26.
[네트워크] 기초 용어 및 데이터 전송 방식, 네트워크 분류 네트워크노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합노드: 서버, 라우터, 스위치 등 네트워크 장치링크(엣지): 유선 또는 무선과 같은 연결매체 (ex. 와이파이, LAN)📝 예시핸드폰으로 www.naver.com에 요청하여 화면 요청  시 해당 사이트 서버에서 응답으로 화면 전송이때 핸드폰이 노드가 됨핸드폰이라는 장치를 통해서 naver와 통신, 네이버 서버 또한 노드가 됨노드와 노드를 연결하는 매체가 링크 트래픽특정 시점에 링크 내에 흐르는 데이터의 양서버에 저장된 파일을 클라이언트가 다운로드 시 발생되는 데이터의 누적량 기본 표시 단위는 B계산 방법 = 사용한 데이터 양 * 사용 횟수ex) 10명이 10MB 크기의 파일 다운로드 ==> 100MB 📍 트래픽과 처.. 2024. 6. 26.
[CS] 디자인패턴과 라이브러리/프레임워크 디자인패턴 - 객체 간 상호관계를 통해 문제 해결 - 프레임워크, 라이브러리의 토대 (ex. sns 로그인 연동시 한 줄로 해결) - 이를 기반으로 여러 문제를 해결하는 데 있어 빠른 의사소통 가능 코드를 모두 한 파일에 넣으면 모듈화 에러 수정, 로직 변경이 어려움 규약, 전략패턴 종류 - 생성 패턴: 객체를 어떻게 만들까 - 구조 패턴: 만들어진 객체를 어떤 구조로 무엇을 만들 것인가 (프록시, 어댑터, - 행동 패턴: 객체나 클래스 간 알고리즘, 책임 할당에 관한 패턴 (이터레이터, 옵저버, 전략,  --> 이외에도 수천가지 다양한 디자인패턴이 있다. 라이브러리/프레임워크 - 공통으로 사용될 수 있는 특정한 기능들 모듈화 - 폴더명, 파일명 규칙 X / 규칙 O 라이브러리(ex. axios)는 프레.. 2024. 6. 26.