본문 바로가기

전체 글

(144)
Java 그래프 문제 -인접 행렬, 인접 리스트 ,DFS, BFS 개요 목적 이번 시간에는 코딩 테스트 그래프 문제를 풀기 위한 그래프 인접 행렬 인접 리스트 표현 문제 풀이 방식에 대해서 알아본다. DFS, BFS 방식의 그래프 문제들을 풀어보면서 심화 그래프 문제 풀이 방법도 알아보자. 그래프와 인접 행렬 무방향 그래프, 방향 그래프, 가중치 방향 그래프를 컴퓨터가 이해할 수 있는 인접 행렬로 표현을 해보자. 1. 무방향 그래프 무방향 그래프는 양방향 그래프라고도 한다. 해당 그래프가 이루어진 노드와 엣지(간선)의 숫자 집합을 나열해보면, 1 2 1 3 2 4 2 5 3 4 3 1 4 2 5 2 이 들어온 수를 grab[a][b] = 1 grap[b][a]로 체크를 하면 인접 행렬을 구할 수 있다. 1 2 3 4 5 1 1 1 2 1 1 1 3 1 1 4 1 1 5..
Java BFS 기초 이해와 문제 풀이 개요 목적 이번 시간에는 BFS 쉬운 문제들을 풀어보면서 BFS 동작 원리와 풀이 방법에 대해서 알아보자. BFS 넓이 우선 탐색 문제를 통해서 알아보기 이진 트리 노드가 주어졌을 때 목표 0: 1 1: 2 3 2: 4 5 6 7 이런식으로 각 레벨 별로 탐색하는 알고리즘을 한번 작성해보자 풀이 import java.util.LinkedList; import java.util.Queue; public class 이진트리순회 { static class Node{ int data; Node lt, rt; public Node(int val) { data=val; lt=rt=null; } } public static void BFS(Node node) { Queue queue = new LinkedList()..
Java DFS 기초 이해와 문제 풀이 개요 목적 DFS 깊이 우선 탐색을 재귀 함수로 많이 표현하기 때문에 재귀 함수 동작 과정을 먼저 이해해야 한다. 아래 문제들을 풀면서 재귀 함수가 어떻게 진행되는 지 파악하면서 공부해보자. 그리고 기초적인 DFS 문제들을 풀면서 DFS에 대한 이해를 해보자. 재귀 함수 문제 풀이 1. 해당 재귀 함수가 어떻게 진행될까 생각해보기 public class Main { public static void DFS(int n) { if (n == 0) { return; } else { DFS(n - 1); //6번 라인 System.out.print(n + " "); //7번 라인 } } public static void main(String[] args){ DFS(3); } } DFS(3) 에서 6번 라인에 D..
코딩 테스트 Java 정렬 문제 풀이 선택 정렬 알고리즘 작성하기 해당 숫자들을 선택 정렬을 사용해서 정렬한 값을 출력하시오 6 13 5 11 7 23 15 풀이 import java.util.Arrays; import java.util.Scanner; public class 선택정렬 { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int n=kb.nextInt(); int[] arr=new int[n]; for(int i=0; i
Well known Port 개요 목적 네트워크 통신에서 주소 역할을 하는 IP 주소는 컴퓨터와 서버 자체를 나타낸다. port 번호는 한 컴퓨터와 서버 안의 다양한 프로세스를 구분지어 주는 역할 을 한다. 그 중에서 대중적인 프로세스를 1~1023번 안에 숫자로 지정했는데, 그것이 Well known Port이다. 대표적으로 웹(HTTP), 메일(SMTP) 등이 있다. well known port각 포트 번호에 어떤 프로세스가 지정되어 있는 지 알아보자. 많이 쓰이는 Well known Port 포트번호 TCP/UDP 통신설명 7 TCP/UDP ECHO(두 장비 간의 연결을 확인하는 용도) 9 TCP/UDP DISCARD(테스트를 하기 위한 용도, 서버는 수신된 데이터를 버린다.) 13 TCP/UDP DAYTIME(서버의 현재 시..
백엔드 개발을 위한 네트워크 기본 용어 네트워크 기본 용어 (네트워크, 처리량, 트래픽, 대역폭, RTT, 유니캐스트, 멀티캐스트, 브로드캐스트) 네트워크 네트워크란 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미한다. 노드 : 서버, 라우터, 스위치 등 네트워크 장치 링크(엣지) : 유선 또는 무선과 같은 연결매체 (와이파이나 LAN) 트래픽(Traffic), 처리량(Throughput), 대역 폭(Bandwidth) 트래픽 트래픽은 특정 시점에 링크 내의 흐르는 데이터의 양이다. 단위 : bps(bits per second) 예를 들어 100KB 이미지를 1000명이 다운로드하면 누적 트래픽은 100.000KB(100MB)이다. 처리량 처리량(throughput)은 링크 내에서 성공적으로 전달된 데이..
코딩 테스트 Java Hash, Set 문제 풀이 개요와 목적 코딩 테스트 대표적인 Hash, Set 문제들을 풀어보고, Hash, Set의 문제 풀이 방식에 대해서 알아본다. 아나그램 AbaAeCe baeeACA abaCC Caaab 풀이 정렬로도 풀 수 있지만, hashMap과 getOrDefault를 사용해서 풀어보자 public class 아나그램 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.next(); String b = sc.next(); char[] aChars = a.toCharArray(); char[] bChars = b.toCharArray(); HashMap map = new HashMap(); String ..
Java Chatiing Server 만들기 관련 내용 JSON 개념과 특징 이해 Enum의 개념과 활용 방법 이해 개요 목적 Runnable Thread와 Java ServerSocket 클래스를 사용해서, 여러명이 접속할 수 있는 채팅 서버를 만들어보자. Thread, ThreadLocal, ReentrantLock을 사용해서 하나의 Server 프로세스에 여러 Client 동작이 동시에 진행되어도 동시성 문제 없이 잘 돌아가는 채팅 서비스를 만드는 것이 목적이다. Server에서 구현할 동작들을 소개한다. 여러 Client가 접속할 수 있는 채팅 서버 생성 Client 입장 시 이름을 먼저 등록해야 채팅 메세지 작성 가능하도록 설정 프로토콜([Header : [길이][패킷종류]] - [Body])을 사용하여 Client 데이터 구분하기 (이름..

반응형