전체 글 107

백준 1917 JAVA

문제 유형시뮬레이션문제 접근답정육면체 주사위를 만들 수 있는 지 검사주어지는 정보주사위 3개 정보후보완전탐색가능할 것이라 생각됨주사위의 정보는 3개이므로, 그에 따른 모든 경우의 수 탐색으로도 시간복잡도가 크게 늘어나지는 않음하지만 방법을 찾지 못함시뮬레이션가능주사위를 굴린다고 생각하고 시뮬레이션을 구현가능풀이목적주어진 주사위를 정육면체 주사위로 만들어보자방법입력 주사위가 위 사진 모양 틀에 들어갈 수 있는지를 확인한다.해당 틀을 왼, 오, 위, 아래 방향으로 굴려가면서 입력값이 1일때 해당 틀 위치를 true로 채운다.주사위의 빈 곳이 없다면 입력 주사위는 정육면체 모양을 만들 수 있다.  import java.util.*;import java.io.*;class XY{ public int y,x..

알고리즘 2024.08.15

네트워크3

20. TCP 헤더를 설명하세요.부위별 해석발신지 포트 주소보내는 곳의 포트 번호목적지 포트 주소받는 곳의 포트 번호Sequence number현재 패킷의 바이트 번호전송 데이터들을 서로 뒤섞이지 않고 보내기 위해 순서를 만드는 것임예시앞선 패킷이 1000~1200번 바이트 사용 시, 현재 패킷의 시퀀스 넘버는 1201Acknowledgement number(확인 응답 번호)수신자가 원하는 다음 바이트 번호수신자가 ACK 신호로 Acknowledgement number를 같이 보냄송신자는 해당 Acknowledgement number를 TCP 헤더에 담아서 수신자에게 보냄HLEN (or) Data offsetTCP 헤더의 크기를 나타냄단위 : 1word(= 4byte)예시TCP 헤더의 크기 = 10byt..

CS/네트워크 2024.08.14

백준 1113 JAVA

문제 유형시뮬레이션 + BFS문제 접근답물을 뿌릴 때 만들어지는 웅덩이의 용량주어지는 정보맵 크기 최대 2500 (N * M)땅의 높낮이 1~9후보완전탐색가능맵의 크기와 땅의 높낮이가 충분히 작음따라서, 문제 설명 그대로 시뮬레이션을 만드는 게 좋을 듯함풀이(BFS)맵의 제일 낮은 땅, 높은 땅을 구한다.제일 낮은 땅들에 +1만큼의 물을 뿌린다.물을 뿌리고 난 후에 웅덩이가 형성될 시, 정답에 더한다.제일 높은 땅만큼 될 때까지 2번 과정에서부터 물을 +1 뿌린다.주의BFS()에서 웅덩이가 형성되지 않더라도, 물을 뿌려야한다(물을 뿌릴 수 있는 땅 한정).물을 뿌리지 않을 시, 물로 인해 높아진 땅이 벽처럼 형성돼서 새로운 웅덩이가 생길 수 있다.이는 가짜 웅덩이므로 count되면 안된다.//맞는 접근b..

알고리즘 2024.08.14

네트워크2

11. Cookie , Session, Token에 대해서 설명해주세요쿠키헤더Set-Cookie서버 → 클라이언트로 쿠키 전달Cookie클라이언트 → 서버로 쿠키 전달과정클라이언트 → 서버로 요청 보냄서버는 요청의 응답 + 저장하고 싶은 정보를 Set-Cookie에 담아서 클라이언트에 전달클라이언트는 서버에 요청을 보낼 때마다, 쿠키 정보를 Cookie에 담아서 전달서버는 쿠키 정보를 통해, 클라이언트의 정보를 식별 가능단점보안 취약(클라이언트 측에서 쿠키의 수정, 삭제 가능)세션클라이언트와 서버 사이의 연결을 확인하기 위한 정보과정클라이언트 → 서버로 연결 요청서버는 세션ID 생성 및 저장서버 → 클라이언트로 세션ID를 쿠키에 기록하여 전달클라이언트 → 서버로 요청을 보낼 시, 해당 세션ID가 있는 쿠..

CS/네트워크 2024.08.13

백준 1765 JAVA

문제 유형유니온 파인드 or 완전 탐색문제 접근답친구끼리 묶었을 때 팀의 개수주어지는 정보학생 수 최대 1000 (n)학생 간의 인간관계 정보 최대 5000 (m)후보완전탐색가능학생의 수가 충분히 작음완전탐색을 통한 n*n 연산을 시도했을 때, 시간 복잡도를 넘지 않음유니온 파인드적합1번의 친구가 2번이고, 2번의 친구가 3번이라고 하자.이 경우, 완전 탐색으로 1,2,3번의 친구 리스트를 전부 탐색하는 것도 된다.하지만 유니온 파인드를 통해, 1, 2, 3번의 최종 친구를 정해놓으면 더 빨리 팀 개수를 구할 수 있다.풀이(유니온 파인드)목적팀 개수를 구한다.단계자료구조List[] FList;친구 명단을 기록한다.a, b가 친구라면FList[a].add(b)FList[b].add(a)List[] ELis..

알고리즘 2024.08.13

네트워크1

1. OSI 7계층1계층 : 물리 계층전기적 신호를 전달하는 역할신호 단위 : 0, 1ex) 허브, 리피터2계층 : 데이터 링크 계층1계층 정보의 오류를 파악하고 재전송하는 역할해당 데이터에 MAC 주소를 부착하여 3계층으로 전송신호 단위 : 프레임ex) 브릿지, 스위치, 이더넷3계층 : 네트워크 계층데이터를 전달할 주소를 지정하는 역할라우터를 통해 전송할 IP 주소를 선택하여, 해당 주소에 데이터를 전달해당 데이터에는 IP 헤더를 부착함.신호 단위 : 패킷ex) 라우터4계층 : 전송 계층목적지까지 신뢰할 수 있는 데이터를 보내는 역할종류연결형 통신(TCP)비연결형 통신(UDP)4계층에서 데이터를 붙이는 헤더들Port 번호TCP or UDP5계층 : 세션 계층두 대상 간에 데이터 교환이 일어나는 장소(상..

CS/네트워크 2024.08.12

백준 2638 JAVA

문제 유형시뮬레이션문제 접근답치즈가 전부 녹기까지 걸리는 시간주어지는 정보맵 크기 최대 10000 (N*M)맨 바깥 테두리는 치즈가 들어올 수 없다.치즈 = 1, 여백 = 0후보시뮬레이션가능이유맵이 충분히 작음각 시간마다 치즈에 대한 시행 횟수는 최대 (N*M)*2번 정도 밖에 되지 않음(문제에서 주어지는 대로 연산을 진행할 시)풀이목적치즈가 녹기까지 걸리는 시간을 구하자단계자료구조int[][] map문제에서 주어지는 치즈 맵을 기록한다.int[][] copyMap치즈 녹이기 연산마다 map을 복사한다boolean[][] visited바깥 공기에서부터 치즈의 접촉 시, true로 체크한다함수bfs()녹을 치즈가 없으면 true를 반환한다.단계map을 copyMap에 복사한다copyMap에 0,0 좌표부터..

알고리즘 2024.08.12

백준 4256 JAVA

문제 유형트리문제 접근답후위 순회 출력주어지는 정보트리 노드 개수 최대 1000이진 트리알고리즘 후보없음전위, 중위 순회로 트리의 모양을 유추 할 수 있는지를 묻는 문제 같음풀이목적후위 순회 출력필요 지식전위, 중위로 트리 모양 유추전위 순회와 후위 순회가 주어졌다전위 순회의 첫번째 인덱스 값은 a이다.중위 순회의 A번째 인덱스 값은 a이다.이때, 중위 순회의 1~A-1 인덱스의 값은 a의 왼쪽 자식이다.중의 순회의 A+1~N(마지막 인덱스) 인덱스의 값은 a의 오른쪽 자식이다.함수printTree(int preIdx, int s, int e)후위 순회 출력 함수단계재귀적으로 루트 노드부터 왼쪽 자식→오른쪽 자식 순으로 탐색한다.맨 마지막으로 탐색된 노드부터 출력한다.출력 결과는 후위 순회와 같다. im..

알고리즘 2024.08.10

백준 14466 JAVA

문제 유형완전 탐색 + BFS문제 접근답길을 건너야만 만날 수 있는 소의 쌍 수주어지는 정보맵 크기 최대 10000 (N*N)소 개수 최대 100 (K)후보완전탐색가능N, K가 충분히 작으므로 시간 초과는 없을 것으로 예상⇒ BFS를 통해 완전탐색 시행풀이목적BFS 탐색으로 다리를 건너야만 만날 수 있는 소를 카운팅한다.단계자료구조Cow[i] cowList;i번째로 입력된 소의 좌표를 등록한다.int[y][x] map;(y,x) 좌표의 소의 i 번호를 적는다.boolean[][][][] bridge;(y,x) → (y’,x’) 좌표로 이어지는 다리를 true로 등록Q) 배열이 커서 시간 초과가 일어나지 않나?일어나지 않는다100^4 byte = 100MB함수bfs()소를 순서대로 뽑아서 Map 전체를 탐..

알고리즘 2024.08.09

AWS에 배포하기(SpringBoot + MySQL + Docker)

이 글은 프로젝트를 AWS에 배포하는 방법을 담았다.나는 후에 만들 내 프로젝트를 사람들에게 오픈하고 싶었다. 이를 위해 AWS로 간단한 게시판을 배포하는 것을 시도하게 되었다.이 글이 맞지않은 부분이 있다면 미리 사과드린다. 개요Docker란?왜 Docker를 써야하는가?Dokcer 사용법로컬 환경에서 Docker 실행AWS에서 프로젝트 실행 1. Docker란?프로젝트의 배포 환경을 일정하게 유지하는 프로그램이다.구조이미지내 프로젝트의 전체 파일컨테이너이미지의 실행 상태사용이미지화내 프로젝트를 도커에 이미지로 저장한다컨테이너화해당 이미지를 컨테이너로써 실행한다.결과적으로 도커 내부에서 컨테이너를 실행하여, 내 프로젝트를 실행시킨다.2. 왜 Docker를 써야하는가?배포를 더 쉽게 하기 위해서다.기존 ..

2024.08.08