분류 전체보기

Gyoogle (규글)
[SWEA 1767] 프로세서 연결하기(Java)
[SWEA 1767] 프로세서 연결하기(Java) 문제 출처 : 링크 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com 2차원 배열 안에 설치되어 있는 코어에 전선을 연결시키는 문제다 벽에 붙어있는 코어는 전선을 연결할 수 없고, 나머지 코어를 최대한 많이 활용하면서 최소한의 전선 길이를 출력해야하는 문제다 최소한의 전선 길이라는 말로 BFS로 접근하면 힘들어지고, 코어를 많이 가져가기 위해 DFS 탐색 접근이 편하다 우선 코어에 해당하는 1의 값이 들어오면, 벽에 붙어있지 않은 코어들을 list에 저장했다 그리고 dfs를 통해 해당 코어의 index와 코어의 수 coreCnt, 마지막으로 전선의 길이를 ..
[SWEA 2117] 홈 방범 서비스 (Java)
·Algorithm/SWEA
[SWEA 2117] 홈 방범 서비스 (Java) 문제 출처 : 링크 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 소프트웨어 모의 테스트 문제다. 시뮬레이션 문제로, 마름모를 구현할 수만 있으면 잘 풀 수 있다. (잘 생각이 안나서 더럽게 구현했음ㅜㅜ) 이익이 0 이상일 때를 체크해서 가장 많은 집의 수를 출력하면 된다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858..
[SWEA 4050] 재관이의 대량할인 (Java)
·Algorithm/SWEA
[SWEA 4050] 재관이의 대량할인 (Java) 문제 : 링크 입력 받은 수를 sort하면 작은 수부터 큰 수로 정렬된다. 뒤에서부터 3개씩 묶어서 할인을 받으면 가장 큰 할인 금액을 얻을 수 있다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer; public class Solution_4050_재관이의대량할인 { static int N; static int[] arr; publ..
[SWEA 4301] 콩 많이 심기(Java)
·Algorithm/SWEA
[SWEA 4301] 콩 많이 심기(Java) 문제 출처 : 링크 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 규칙을 찾고 미리 배열에 채운다. 그리고 입력 받은 N과 M을 통해서 2차원배열의 [0][0] ~ [N-1][M-1] 혹은 [0][0] ~ [M-1][N-1] 중에 큰 수를 저장하여 출력하면 된다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899..
[운영체제] Deadlock
·CS/운영체제
[운영체제] Deadlock 데드락(DeadLock) 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태'교착 상태'라고도 부름시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생 데드락이 일어나는 경우 프로세스1과 2가 자원1,2를 모두 얻어야 한다고 가정해보자t1 : 프로세스1이 자원1을 얻음 / 프로세스2가 자원2를 얻음t2 : 프로세스1은 자원2를 기다림 / 프로세스2는 자원1을 기다림 현재 서로 원하는 자원이 상대방에 할당되어 있어서 두 프로세스는 무한정 wait 상태에 빠짐→ 이것이 바로 DeadLock!!!!!! (주로 발생하는 경우) 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황 발생한 프로세스가 자원을 요청했을 때, 동시에 그 자원을 사용할 수 없..
[운영체제] 뮤텍스(Mutex) & 세마포어(Semaphore)
·CS/운영체제
임계 영역(Critical Section) 하나의 프로세스가 자신의 임계 영역에서 작업하는 동안에, 다른 프로세스가 그 임계 영역에 들어오지 못하도록 경쟁 상황을 막는 것 임계 영역은 프로세스 영역 중 'Code'에 해당 코드 영역은 다음과 같이 나누어짐 [잔류 영역] [진입 영역] [임계 영역] [출구 영역] 진입 영역과 출구 영역에서 임계 영역 처리 중일 때 다른 프로세스가 끼어들지 못하게 처리 Linux에서는 이러한 처리를 뮤텍스와 세마포어를 이용 진입 영역에서 뮤텍스 lock을 통해 다른 프로세스 접근을 막아줌 프로세스의 임계 영역 처리가 끝나면 뮤텍스 unlock을 통해 다른 프로세스 접근 허용 임계 영역이 중단되지 않도록 하기 위해선 3가지 조건을 만족해야 함 상호 배제 (Mutual Excl..
[Java] String 문자열 reverse하기
[Java] String 문자열 reverse하기 엄청 간단한 문제다. 근데 reverse를 함수로 구현하지 않고, StringBuilder를 사용하면 빠르게 찾을 수 있다는 것을 알게 된 문제 String 값이 주어져 있으면, 아래와 같이 써주면 된다. new StringBuilder("스트링 변수이름").reverse().toString(); 123456789101112131415161718192021222324import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer; public class Main_2908_상수 { public static void main(String[] args) ..
[백준 15686] 치킨 배달 (Java)
[백준 15686] 치킨 배달 (Java) 출처 : 링크 삼성 코테 기출문제다. 0은 빈 공간, 1은 집, 2는 치킨집이다. 집과 치킨집의 행렬 값을 저장해두고, 치킨집의 수도 같이 저장한다. 치킨집의 총 개수가 n개면, 1~n개까지 조합을 통해 채택시키고 가장 작은 도서의 치킨 거리를 구하면 된다. 이 문제는 따로 dfs, bfs를 적용하지 않고도 풀 수 있다. 최소 거리만 잘 구해보자 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394..
[백준 14502] 연구소 (Java)
[백준 14502] 연구소 (Java) 출처 : 링크 삼성 코테 기출 문제다. 0은 이동가능한 값, 1은 벽, 2는 바이러스다. 벽으로 막혀있지 않고, 바이러스와 인접해있는 0인 곳들은 모두 감염이 된다. 처음 시작 전에, 값이 0인 map에서 3곳에 벽을 세울 수 있다. 따라서 map에 저장된 0의 수를 저장하고, 조합을 통해 벽을 모두 세운 뒤 dfs를 진행했다. 모두 진행한 뒤 가장 많은 안전 영역 수를 출력해주면 되는 문제다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081..
[백준 16234] 인구 이동 (Java)
[백준 16234] 인구 이동 (Java) 출처 : 링크 2018년 하반기 삼성 코테 기출이다. DFS와 BFS 모두 사용이 가능하고, 인구 이동이 가능할 때까지 계속 진행해서 횟수를 출력해주면 된다. 이동이 가능한 배열마다 같은 숫자를 저장하도록 2차원 배열을 하나 더 만들었다. (copymap) DFS를 통해 조건에 맞는 이동가능 배열끼리 묶어주고, 해당 map의 값을 모두 더해 평균을 내서 저장시켰다. 평균을 구하는 반복문을 따로 만들어서 사용하면 시간초과로 풀 수 없으므로 먼저 리스트를 생성해 DFS를 호출하는 반복문 안에서 평균 값 계산을 같이 해야 시간을 줄일 수 있었다. 12345678910111213141516171819202122232425262728293031323334353637383..
[백준 2839] 설탕 배달 (Java)
[백준 2839] 설탕 배달 (Java) 출처 : 링크 구현 문제다. 5kg 봉지와 3kg 봉지로 최소 봉지 수를 구해야 한다. 가장 최소가 될 수 있는 수는 5kg로 모두 가능할 때이므로 먼저 체크했다. 그 다음 미리 3kg로 나눠지는 봉지 수도 체크하고 값을 저장시켜 놓았다. 이제 N 값에서 5씩 감소시키면서 3으로 나누어지는지 while문을 통해 진행하면 끝 N이 5보다 작아질 때까지 돌면서 처음값과 갱신된 최소값이 답이고, 변화가 없었으면 -1 출력한다 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import java.io.BufferedReader;import java.io.InputStr..
[백준 2470] 두 용액 (Java)
[백준 2470] 두 용액 (Java) 출처 : 링크 쉽게 생각하고 접근하다 큰 코 다쳤다;; 조합 → 시간초과이중for문 → 시간초과 N의 수를 잘 체크하고 문제를 푸는 습관을 갖자.. ArrayList에 값을 담고, Sort한다 처음 값과 끝 값의 합을 미리 저장해두고, while문을 통해 시작과 끝의 인덱스 값을 증감해가며 최소값을 찾아간다 문제 풀 때는 용액의 값이 크길래 long으로 선언해서 풀었는데 10억이라 int형으로 풀어도 상관 없을 것 같다 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import java.io.BufferedReader;import jav..
[백준 2004] 조합 0의 개수 (Java)
[백준 2004] 조합 0의 개수 (Java) 출처 : 링크 그냥 조합으로 풀면 시간 안에 해결이 불가능하다. 끝자리 0의 개수만 구하면 되므로 다 계산할 필요가 없다. 일단 조합의 식은 아래와 같다. nCm = n! / (n-m)! * m! 결국 이 값에서 2의 배수와 5의 배수의 갯수를 찾으면 된다. 2의 배수 1개와 5의 배수 1개가 만나면 10이 되어 끝자리 0 하나가 생기기 때문 주의) 25부터는 5가 두개, 4부터는 2가 2개이므로 반복문을 잘 돌려야 함 5와 2 모두 n!에서 개수를 구해주고, 나눠지는 (n-m)!이랑 m!에서 나오는 개수를 빼주면 된다. 그리고 5와 2 중에 개수 최소값을 출력하면 끝이다 123456789101112131415161718192021222324252627282..
[백준 2503] 숫자 야구 (Java)
[백준 2503] 숫자 야구 (Java) 출처 : 링크 완탐 문제다. 처음에 규칙을 어떻게 가져와야할까 고민했지만, 그냥 다 돌면서 해당하는 규칙과 비교하고 성립하는 수만 고르면 된다. 123~987까지 for문으로 돌아도 되지만, 중복되는 수를 없애기위해 순열을 만들어 풀었다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105import java.io.BufferedReader;impo..
[백준 3055] 탈출 (java, bfs)
[백준 3055] 탈출 (java, bfs) 문제 출처 : 링크 숲의 2차원 배열 : int [R][C]비어있는 곳 : '.'물이 차있는 지역 : '*'돌 : 'X'도착지점 : 'D'고슴도치 위치 : 'S' 물이 차있는 지역은 시간이 지날 때마다 상하좌우로 퍼지게 되고, 동시에 고슴도치는 한 칸을 움직인다.물에 막히기 전에 도착지점까지 도착할 수 있는지 확인하는 문제다. 숲의 2차원 배열을 입력할 때, 고슴도치와 물이 차있는 지역에 대한 행과 열을 큐에 각각 저장하고, bfs를 통해 이동 시간을 구했다. 큐를 2개로 진행하는 bfs는 처음해봐서 조금 어려웠지만, 원리는 크게 다르지 않았다. 둘다 큐에 들어온 size만큼 반복문을 돌려 진행하고, 고슴도치의 큐 사이즈가 0이 되어버리면 이동이 불가능한 것이..
[swexpert 1494] 사랑의 카운슬러 (java)
·Algorithm/SWEA
[swexpert 1494] 사랑의 카운슬러 (java) 문제 출처 : 링크 지렁이를 둘러 짝을 지어주는 모든 경우의 수 각 짝이 연결되는 벡터를 구하여 전체 합의 크기를 구해야 한다 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer; /** * 지렁이 개수 짝수개, 둘씩 짝을 지어줌 * 짝을 지어주는 모든 경우의 ..
[백준 2583] 영역 구하기 (java, BFS)
[백준 2583] 영역 구하기 (java, BFS) 문제 출처 : 링크 단지번호와 유사한 문제같다. BFS를 활용하여 눈금이 칠해지지 않은 부분의 영역 수와, 각 넓이를 구해야 한다. 눈금이 칠해지는 곳을 1로 값을 주고, 0인 부분에 대해서 BFS로 탐색했다. 아직 class를 만들 때부터 배열을 보기 편하게 하기 위해 y축 x축 순으로 작성하는 게 약간 어색한 감이 있어서 더 연습해야겠다.. 방문이 끝날 때 마다 count 변수를 추가하면서 갯수를 세줬고, BFS 안에서 방문이 진행될 때마다 넓이를 1씩 추가시키며 저장했다. 넓이의 순서가 문제의 출력값과 달라서, 한번 배열을 sort해줬는데 정답처리 되었다. 작은 순으로 나열하라고 하지는 않았는데 왜인지는 모르겠다;; 12345678910111213..
[백준 6603] 로또 (java)
[백준 6603] 로또 (java) 문제 출처 : 링크 입력 받은 수 중에서 나올 수 있는 로또의 결과를 모두 출력해야 하는 문제다. 이 문제는 DFS 백트래킹을 이용해서 많이 푼다고 하는데, 12개의 숫자 중에 6개를 고르는 것이므로 조합을 이용해도 충분히 결과를 구할 수 있을 것 같아서 조합을 이용했다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer; public class Main6603 {..
[운영체제] CPU 스케줄링
·CS/운영체제
03_김규석_스케줄러2 [운영체제] CPU 스케줄링 스케줄링이 뭐였죠?!실행 중인 모든 프로세스들에게 골고루 CPU를 할당하는 것! CPU 스케줄링이 필요한 이유는?!CPU를 점유하고 있는 한 프로세스가 입출력 요청에 의해 wait 상태로 되었다고 생각해보자.이 프로세스가 다시 ready 상태로 올 때까지 기다리고만 있는 것은 매우 비효율적임다중 프로그램의 목적은 CPU 효율을 극대화 하는데 있으므로, CPU 스케줄링은 다중 프로그램을 지원하는 운영체제에서 필수적인 요소다!또한, 시스템의 용도에 따라 적절하고 효율적인 스케줄링 알고리즘을 선택하는 것도 매우 중요함 CPU 스케줄링이 일어나는 시점running → waiting (비선점 ex. 입출력 요청)running → ready (선점 ex. 인터럽트..
[백준 1261] 알고스팟 (Java, 다익스트라)
[백준 1261] 알고스팟 문제 출처 : 링크 경로를 이동하는 걸 생각하면 DFS나 BFS를 활용해야 될 것 같다. 하지만 기존의 문제와는 다르게, '가중치'가 존재한다. 1인 값을 가지고 있는 곳을 지날 때는 벽이 있는 것이므로 부수고 지나갈 수 밖에 없다. 따라서 그냥 움직이는 것이 아닌, 1인 곳을 지나갈 때마다 값을 변경시켜나가야 하는 문제다. 우선 미로탐색처럼 BFS와 유사한 방식으로 나아가지만, 이 가중치 값을 최소화 시키기 위해 그냥 큐가 아닌 우선순위 큐를 사용해서 저장한다. (우선순위를 위해 comperable 활용) 123456789101112131415161718class Spot implements Comparable{ int y; int x; int cost; public Spot..
[운영체제] 스케줄러
·CS/운영체제
[운영체제] 스케줄러 [운영체제] 스케줄러 스케줄링이란?시스템이 실행하고자 할 때 프로세서(CPU)를 프로그램들에게 할당하는 과정 프로세스(Process)는 자신의 임무를 모두 수행하고 사라질 때까지 많은 큐를 돌아다님이때 프로그램들은 제한된 프로세서(CPU)를 서로 사용하려고 함OS는 이러한 프로세스 중 하나를 택하는데, 바로 스케줄러가 이러한 역할을 담당 가장 자주 사용되는 스케줄러는 장기 스케줄러와 단기 스케줄러(주로 일괄처리 시스템에서 사용) 실행 준비가 완료된 프로세스들은 준비 큐에 놓임프로세스는, 프로세서(CPU)를 할당 받을 때까지 준비 큐에서 대기함 장기 스케줄러(Long Term Scheduler)작업 스케줄러, 승인 스케줄러라고도 함디스크 내의 작업을 어떤 순서로 메모리에 가져올 지 결..
[알고리즘] 서로소 집합(Disjoint-sets) - Java
서로소 집합(Disjoint-sets) [알고리즘] 서로소 집합(Disjoint-sets) 서로소 or 상호배타 집합서로 중복 포함된 원소가 없는 집합(= 즉, 교집합이 없는 것) 대표자(representative)집합에 속한 하나의 특정 멤버를 통해서 각 집합들을 구분 상호배타 집합 표현 방법연결 리스트트리 상호배타 집합 연산Make-Set(x), Find-Set(x), Union(x,y) 트리를 이용해 상호배타 집합 표현된 모습부모는 해당 노드의 Find-Set 값 연산Make_Set(x) : 유일한 멤버 x를 포함하는 새로운 집합을 생성하는 연산Find_Set(x) : x를 포함하는 집합을 찾는 연산(해당 노드의 부모 정보 갱신)Union(x,y) : x와 y를 포함하는 두 집합을 통합하는 연산 M..
[알고리즘] 트라이(Trie) - Java
[알고리즘] 트라이(Trie) 트라이(TRIE) 트라이(TRIE)retrieval 문자열의 집합을 표현하는 트리를 말한다모든 문자열은 다른 문자열의 접두어가 아니라고 가정 부분 문자열 검사ba가 abac의 부분 문자열인가?두개 접두사의 최장 공통 접두어 찾기abac와 ac의 최장 공통 접두어는?사전적 순서로 정렬된 k번째 접미사 찾기abac의 3번째 접미사는? : abac, ac, bac, c (정답 : bac) 각 간선은 하나의 문자에 대응한다같은 노드에 나오는 간선들은 같은 레벨을 갖지 않음각 문자열은 단말 노드에 대응한다 Compressed Trie노드들과 간선들을 부분 문자열로 압축(= 접미어 트리(Suffix Tree)) 문자열 S = {xabxac}에 대한 접미어 트리 발생하는 문제점 해결책하..
[알고리즘] 다익스트라(Dijkstra) - Java
[알고리즘] 다익스트라(Dijkstra) 다익스트라(Dijkstra) : 하나의 선택한 정점에서 각 정점까지 갈 수 있는 최단거리를 구하는 알고리즘 경로를 찾을 때 가중치가 있으면 사용하자 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import java.util.Arrays; /** * Dijkstra : 하나의 선택한 정점에서 각 정점까지 갈 수 있는 최단거리를 구하는 알고리즘 * * Greedy 방식, 음이 아닌 가중치일 경우만 사용가능 * 음의 가중치가 있는 경우 => 벨만포드 알고리즘을 통해서 구해야 한다 * 시간복잡도 O[n^2] */ public cl..
[디자인 패턴] 어댑터(Adapter) 패턴
어댑터 패턴용도 : 클래스를 바로 사용할 수 없는 경우가 있음 (다른 곳에서 개발했다거나, 수정할 수 없을 때) 중간에서 변환 역할을 해주는 클래스가 필요 → 어댑터 패턴사용 방법 : 상속호환되지 않은 인터페이스를 사용하는 클라이언트 그대로 활용 가능향후 인터페이스가 바뀌더라도, 변경 내역은 어댑터에 캡슐화 되므로 클라이언트 바뀔 필요X 클래스 다이어그램 아이폰의 이어폰을 생각해보자가장 흔한 이어폰 잭을 아이폰에 사용하려면, 잭 자체가 맞지 않는다.따라서 우리는 어댑터를 따로 구매해서 연결해야 이런 이어폰들을 사용할 수 있다 이처럼 어댑터는 필요로 하는 인터페이스로 바꿔주는 역할을 한다 이처럼 업체에서 제공한 클래스가 기존 시스템에 맞지 않으면?기존 시스템을 수정할 것이 아니라, 어댑터를 활용해 유연하게..
[디자인 패턴] 유형 분류 및 패턴 정리
디자인 패턴유형 분류Cretional Pattern객체 생성에 관련객체 생성 시, 유연성 높이고 코드의 유지보수에 도움Structural Pattern프로그램 구조 관련자료구조 or 인터페이스 등 프로그램 구조 설계에 활용Behavioral Pattern반복적으로 사용되는 객체들의 상호작용 패턴화 학습할 패턴어댑터(Adapter) 패턴프로토 타입(Prototype) 패턴싱글톤(Singleton) 패턴컴포지트(Composite) 패턴데코레이터(Decorator) 패턴퍼사드(Facade) 패턴프록시(Proxy) 패턴옵저버(Observer) 패턴커맨드(Command) 패턴책임 연쇄(Chain of Responsibility) 패턴중재자(Mediator) 패턴방문자(Visitor) 패턴팩토리 메소드(Factor..
[알고리즘] 동적 계획법(Dynamic Programming) & 메모이제이션(Memoization)
[알고리즘] 동적 계획법(Dynamic Programming) & 메모이제이션(Memoization) 동적 계획법이란? 주어진 문제를 세분화시키고, 최적의 해법을 찾아내기 위한 방법 DP를 이용하면 중복된 부분을 제거하여 다시 계산하지 않아도 되는 장점이 있다. 이는 연산의 효율을 높여주는데 큰 역할을 한다. 이를 알아보기 위해서는 '피보나치 수열'로 알아보기 쉽다 피보나치 수열은 위와 같은 구조로 '재귀 함수'를 통해 구현된다. 즉, index 0과 1을 제외하고 f(n) = f(n-1) + f(n-2)로 정의가 가능하다. 하지만, index의 값이 커질수록 호출되는 재귀함수가 무궁무진하게 커지는 문제가 발생한다. 지금처럼 빨간 원으로 묶인 부분은, 완전히 똑같은 부분을 다시 불러오는 모습을 볼 수 있..
[백준 9663] N-Queen (Backtracking)
[백준 9663] N-Queen 문제 출처 : 링크 백트래킹을 활용하는 가장 유명한 백준 문제가 N-Queen이다. 체스에서 존재하는 '퀸'이 서로 공격할 수 없도록 체스판에 둘 수 있는 방법의 수를 구해야 한다. 퀸은 체스에서 가장 강력한 존재로, 자신이 위치한 곳에서 가로 줄, 세로 줄, 대각선을 모두 움직일 수 있다. N * N 체스판에서 퀸들이 서로 공격하지 못하는 위치를 찾는 것이 문제의 핵심이다. 체스판이라 2차원 배열로 접근해야 된다고 생각할 수 있지만, 이 문제는 1차원으로 해결이 가능하다.왜냐하면, 어차피 하나의 열에 퀸 하나를 두면, 해당 열에는 추가로 더 놓을 수 없기 때문이다.(즉, 하나의 열마다 하나의 퀸만 놓으면 됨) 우선 Queen에 대한 Class를 만들자 123456789c..
[알고리즘] 백트래킹(Backtracking)
[알고리즘] 백트래킹(Backtracking) [알고리즘] 백트래킹(Backtracking) 백트래킹이란?모든 경우의 수를 검색하는 알고리즘'특정조건'을 만족하는 모든 경우의 수를 찾고 싶을 때 유용DFS(깊이 우선 탐색)을 기반으로 하는 알고리즘 후보해 집합에서 최적해 집합을 찾아내는 문제에 적용 가능!후보해 : 정답이 될 가능성이 있는 모든 조합최적해 : 문제의 답으로 기준을 만족하는 해 DFS는 Brute Force 알고리즘으로, 재귀함수를 통해 그냥 모두 다 검사해서 찾음 DFS와 백트래킹의 차이점은 '가지치기'가지치기를 이용하기 때문에 DFS처럼 모든 경우의 수를 확인하는 알고리즘은 아님! 가지치기는 어렵게 생각하지말고 반복문에서 break나 return에 해당한다고 생각하자 백트래킹 대표 문제..
[Java] GUI를 활용한 직원 관리 프로그램
·Java
[Java] GUI를 활용한 직원 관리 프로그램 해당 프로젝트 정보(Github) : 링크 목표 - Singleton 디자인 패턴을 활용한 안정적인 객체 생성- Client와 Server 사이에서 IP/Port 연결을 통해 원활한 소켓 통신 구현- 소켓 통신 시, 객체 단위 전달을 위한 직렬화(Serializable) 구현- Client 생성 시 Thread를 활용한 구현- 프로그램 시각화를 위한 GUI의 JFrame 활용 클래스 다이어그램 Employee직원 정보 객채 : 번호, 이름, 직책, 거주지 정보 CRUD를 위한 getter와 setter 생성 및 서버 출력에 필요한 toString 메소드 오버라이드 소켓에서 객체 단위 전송을 위한 직렬화(Serializable) 적용 IEmpMgr구현이 필요..
Gyoogle
'분류 전체보기' 카테고리의 글 목록 (5 Page)