본문 바로가기

전체 글377

[후기] 나는 독하게 살기로 결심했다. - 리원웨이 총점 : 5점 만점에 2점. ★★☆☆☆ 나는 아직 학생이라, 이 정도까지의 사회생활을 경험해보지 못하였기 때문에 공감하지 못한 책이다. 취업하기 전에 읽기 괜찮을 거 같은데, 특히 마케팅하는 사람들이 다양한 사람들을 만나봐야 하기 때문에 읽으면 좋을 거 같은 책이다. 나는 IT업계로 취업할 거지만 음.. 그래도 쓴소리들이 많아 취업 후에 다시 보는 것도 나쁘지 않다고 생각했다. 이 책의 저자는 말이 세다는 느낌을 받았다. 뭔가 자신의 신념과 주장이 확고한 느낌..? 만약 읽게 된다면 자신의 상황과 맞는 타이틀을 골라 해당 부분만 읽으면 괜찮을 거 같다. 2021. 2. 8.
[VMware] NAT를 이용하여 외부 접속(포트포워딩)하기 VM 버전 : VMware Workstation 우분투 버전 : 18.04 외부 접속 과정 : 우분투 네트워크 세팅 -> VMware 네트워크 세팅 -> 공유기 포트포워딩 -> Inbound 규칙 설정하기 -> 완료 1. 우분투 네트워크 세팅 : 마우스 우클릭 > Setting 클릭 > Network Adapter > Custom에서 NAT 선택 2. VMware 네트워크 설정 2-1. Edit 클릭 > Virtual Network Editor 클릭 > NAT 선택 후, Change Setting 클릭 2-2. NAT 선택 후, NAT Settings 클릭 2-3. NAT Settings에서 Add 버튼 클릭 후, 두 번째 사진과 같이 설정하기 - Host Port : 접근할 포트번호 (unknown 포.. 2021. 2. 7.
[JAVA] 프로그래머스 - 여행경로 (문제 설명) (제한 사항) DFS(깊이 우선 탐색) 알고리즘을 구현하여 해결하는 문제이다. 코드를 다 짜고 나니깐, 굳이 map으로 하지 않고 Arraylist를 사용해도 됐다는 것을 깨달았다. 알고리즘 구현 방법 1. tickets 배열 정렬 2. "ICN"을 시작으로, 연결할 수 있는 티켓(ticket[n][1]) map에 넣기 ** map의 key는 인덱스, value는 ticket[n][1]을 저장함. 3. map의 크기가 tickets.length+1 이 안된다면 백트래킹 (2, 3번 반복) 4. answer 배열에 넣기 public static void main(String[] args) throws ParseException { String[][] tickets= {{"ICN","B"},{.. 2021. 2. 7.
[JAVA] 이차원 문자열 배열 정렬 람다식을 이용해 Arrays.sort 메소드를 오버라이딩하여 쉽게 정렬할 수 있다. 첫 번째 인덱스 값에 따라 정렬되고, 만약 첫 번째 인덱스 값이 동일한 경우에는 두 번째 있는 값을 비교하여 정렬시킨다. 아래와 같은 코드를 사용한다. Arrays.sort(배열, new Comparator() { @Override public int compare(String[] o1, String[] o2) { if(o1[0].toString().contentEquals(o2[0].toString())) return o1[1].toString().compareTo(o2[1].toString()); else return o1[0].toString().compareTo(o2[0].toString()); } }); 다음과 .. 2021. 2. 6.
[JAVA] 프로그래머스 - 디스크 컨트롤러 (문제 설명) (제한 사항) 해당 문제는 CPU 스케줄링 알고리즘 중 SJF(Shortest Job First) 알고리즘 구현 문제이다. 가장 짧게 수행하는 프로세스가 우선순위가 높게 선정되어 CPU를 점유하게 되면 전체 처리 평균 시간을 줄일 수 있다. (하지만 이 알고리즘의 단점은 수행 시간이 긴 프로세스들을 계속해서 CPU를 점유할 수 없다는 것.) 알고리즘 구현 방법 1. 배열 jobs[][] 정렬 2. 요청이 들어온 작업 Map에 넣기 3. 소요시간이 가장 적은 작업부터 Map에서 제거하기 (2,3번 반복) 4. 요청시간 평균 구하기 public static void main(String[] args) { /*14*/ int[][] jobs = {{0, 10}, {2, 10}, {9, 10}, .. 2021. 2. 2.
[후기] 루틴의 힘 - 댄 애리얼리, 그레체루빈, 세스 고딩 외 지음 총점 : 5점 만점에 6점. ★★★★★+★ 늦게 일어나고, 늦게 자는 생활을 다시 다잡기 위해서 읽은 책이다. '루틴'이라는 주제에서 벗어나진 않지만, 여러 작가들이 짧게 다양하게 조언해주고 있어서 필요한 부분만 골라 재밌게 읽은 책이다. 그 중, 좋아하는 일일수록 자주 실천하라. _그레체 루벤 파트에서 "자주 하면, 부담이 줄어든다." 이야기가 가장 와 닿았다. 매일 하루씩 어떠한 일을 행하게 되면, 하루치 정도는 그다지 중요하지 않게 된다. 잘 되는 날도 있고, 안 되는 날도 있을 수 있기 때문에 작업물에 조바심 내지 않아도 된다는 것! 몇 번 실패하더라도, 꾸준히 해보자! 2021. 1. 31.
[VMware] 아파치 서버 Index of / 제거 아파치 서버에서 디렉토리 인덱싱을 막아두지 않아, 우분투의 /var/www/html 폴더의 모든 파일들이 보인다. 디렉토리 인덱싱 설정을 아래의 방법으로 끌 수 있다. (※ 루트 권한으로 설정을 변경해야 한다.) 1. /etc/apache2/apache2.conf 파일을 연다. vi /etc/apache2/apache2.conf 2. Options Indexes FollowSymLinks 옵션을 찾는다. /Indexes 입력 후, 엔터를 치면 빠르게 찾을 수 있다. 3. Indexes FollowSymLinks 를 지워주고, wq 명령어를 통해 저장하고 빠져나온다. 4. 아파치 서버를 재시작한다. service apache2 restart 결과 : 디렉토리 인덱싱이 막힌 것을 확인할 수 있다. 2021. 1. 26.
그래프 탐색(2) - BFS(너비우선탐색) 알고리즘 너비 우선 탐색(Breadth First Search : DFS)은 그래프의 특정 노드에서 시작하여 전체 노드를 탐색하는 알고리즘이다. 탐색을 할 때 시작 정점에서 인접한 노드를 먼저 탐색하여, 가까운 정점을 먼저 방문하고 멀리 떨어진 정점을 나중에 방문하는 방식을 가진다. level을 높여가면서 각각의 정점을 탐색해나가는 알고리즘이다. 알고리즘 구현 방식에는 큐를 사용한다. 정점의 수가 n이고, 간선의 수가 e인 그래프의 경우 시간복잡도 - 인접 행렬로 표현된 경우, 시간복잡도는 O(n^2) - 인접 리스트로 표현된 경우, 시간복잡도는 O(n+e) ** 그래프의 크기가 작을 경우, BFS가 더 유리함 (알고리즘 구현) 재귀 함수 - 인접 행렬(이차원 배열)로 구현했을 때. 아래와 같은 그래프(트리)가 .. 2021. 1. 20.
그래프 탐색(1) - DFS(깊이 우선 탐색) 알고리즘 깊이 우선 탐색(Depth First Search : DFS)은 그래프의 특정 노드에서 시작하여 전체 노드를 탐색하는 알고리즘이다. 탐색을 할 때 시작 정점에서 한 방향으로 계속 가다가 더 이상 갈 수 없게 되면, 다시 가장 가까운 갈림길로 돌아와서 다른 방향으로 다시 탐색을 진행하는 방식을 가진다. 알고리즘 구현 방식에는 재귀 함수로 코드를 작성하거나 스택을 사용하는 두 가지가 있다. 정점의 수가 n이고, 간선의 수가 e인 그래프의 경우 시간복잡도 - 인접 행렬로 표현된 경우, 시간복잡도는 O(n^2) - 인접 리스트로 표현된 경우, 시간복잡도는 O(n+e) (알고리즘 구현) 재귀 함수 - 인접 행렬(이차원 배열)로 구현했을 때. 아래와 같은 그래프(트리)가 존재할 때, 행렬에서 간선이 존재하는 부분은.. 2021. 1. 19.