자바 28

[Linux] Ubuntu 18.04 dpkg error

우분투에 자바를 설치하는 과정에서 아래와 같은 에러가 발생하였다. 그래서 apt가 문제 인가 싶어서 update도 하고, process도 죽여보고 다 해봤지만 해결이 안됬다. sudo update sudo killall apt-get 결국 해결한 방법은 관련된 파일을 삭제하는 것이다. 삭제 할 목록 /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock* rm 명령어로 삭제한다. log@ubuntu:/usr/local/java$ sudo rm /var/lib/apt/lists/lock log@ubuntu:/usr/local/java$ sudo rm /var/cache/apt/archives/lock log@ubuntu:/usr/lo..

Programming/Server 2020.09.16

[백준] 2632번 자바 피자

문제 출처 https://www.acmicpc.net/problem/2632 2632번: 피자판매 첫 번째 줄에는 손님이 구매하고자 하는 피자크기를 나타내는 2,000,000 이하의 자연수가 주어진다. 두 번째 줄에는 A, B 피자의 피자조각의 개수를 나타내 는 정수 m, n 이 차례로 주어진다 ( 3≤m, n≤1000). 세 번째 줄부터 차례로 m 개의 줄에는 피자 A의 미리 잘라진 피자조각의 크기를 나타내는 정수가 주어진다. 그 다음 n 개의 줄에는 차례로 피자B의 미리 잘라진 피자조각의 크기를 나타내는 정수가 주어진다. 각 종류의 피자조각의 크기 www.acmicpc.net 접근 방식 및 풀이 - A피자, B피자의 부분합의 배열을 구한다. - 두 부분합의 배열을 투포인트 알고리즘을 통해 목표값을 찾..

[알고리즘][코딩 인터뷰 완전 분석 정리] 03 스택과 큐

스택 구현하기 LIFO (Last In First Out)에 따라 자료를 배열함. 접시를 쌓아두는 것과 비슷한 구조 스택 연산 pop() : 스택에서 가장 위에 있는 항목을 제거함. push(item) : item 하나를 스택의 가장 윗 부분에 추가함. peek() : 스택의 가장 위에 있는 항목을 반환. isEmpty() : 스택이 비어 있을때에 true를 반환. 배열과 달리 상수 시간에 i번째 항목에 접근할 수 없다.하지만 스택에서 데이터를 추가하거나 삭제하는 연산은 상수시간에 가능함. 배열처럼 원소들을 하나씩 옆으로 밀어줄 필요가 없다. 재귀알고리즘을 사용할 때 유용하게 사용가능. 큐 구현하기 FIFO(First In First Out)에 따라 자료를 배열. 매표소 앞에 서 있느 사람들이 움직이는 ..

Study/Alogorithm 2020.05.09

[알고리즘][코딩 인터뷰 완전 분석 정리] 02 연결리스트

연결리스트 개요 차례로 연결된 노드를 표현해주는 자료구조. 다음 주소값을 가지고 있는 데이터 구조. 단방향/양방향 연결리스트 속도가 느릴 순 있다. K번째 원소를 찾고 싶다면 처음부터 K번 루프를 돌아야함. 장점은 리스트의 시작 지점에서 아이템을 추가하거나 삭제하는 연산을 상수 시간에 할 수 있다. 길이가 정해지지 않은 데이터를 핸들링할때는 OK (cf . 배열은 크기가 정해져 있다.) 연결리스트 만들기 LinkedList 구조를 사용하지 않고 연결리스트에 접근할 때 head 노드의 주소를 참조하는 방법. Class Node{ Node next = null; int data; public Node(int d){ data = d; } void appendToTail(int d){ Node end = new..

Study/Alogorithm 2020.05.07

[Youtube][이팩티브 자바] #2 생성자 매개변수가 너무 많아? 빌더 패턴을 써 봐

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 2: 생성자 매개 변수가 많은 경우에 빌더 패턴 사용을 권장 static 팩토리 메소드와 public 생성자 모두 매개변수가 많이 필요한 경우에 불편해진다. NutritiaonFatc 라는 클래스를 예를 들고있다. 해당 클래스는 몇몇 반드시 필요한 빌드(반드시 셋팅이 되어야하는..)와 부가적인 필드(셋팅이 되지 않아도 되는..)를 가질 수 있는데, 그런 경우에 필수적인 매개변수를 생성자에 부가적인 필드를 하나씩 추가하여 여러 생성자를 만들 수 있다. 해결책 1: 생성자 public class NutritionFacts { private int servingSize; private int..

Programming/Java 2020.05.06

[백준] 1451번 자바 직사각형으로 나누기

문제 출처 https://www.acmicpc.net/problem/1451 1451번: 직사각형으로 나누기 첫째 줄에 직사각형의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 직사각형에 들어가는 수가 가장 윗 줄부터 한 줄에 하나씩 M개의 수가 주어진다. N과 M은 100보다 작거나 같은 자연수이고, 직사각형엔 적어도 3개의 수가 있다. 또, 직사각형에 들어가는 수는 한 자리의 숫자이다. www.acmicpc.net 접근 방식 및 풀이 참고 : Baekjoon Online Judge 1451번 풀이 0. 문제 요약 - 직사각형의 크기 : N * M - 직사각형을 겹치지 않는 3개의 작은 직사각형으로 나누는 문제 - 모든칸은 하나의 직사각형에 포함되어야한다.(남는 칸이 없어야한다.) - 각 직사..

[백준] 1261번 자바 알고스팟

문제 출처 https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미한다. (1, 1)과 (N, M)은 항상 뚫려있다. www.acmicpc.net 접근 방식 및 풀이 - BFS와 Deque 개념 활용한 문제 - 핵심 알고리즘은 BFS에서 0이면 그냥 가고, 1이면 부수고 가야하므로 dist 배열에 1을 더해주는 것이다. - 프로그래밍에서 배열과 수학에서의 x, y 좌표.. 가 헷갈려서 중간에 런타임에러 엄청 걸렸다. 소스 코드 1 2 3 4 5 6 7 8 9 ..

[백준] 10971번 자바 외판원 순회 2

문제 출처 https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j로 가기 위한 비용을 나타낸다. 항상 순회할 수 있는 경우만 입력으로 주어진다. www.acmicpc.net 접근 방식 및 풀이 - 완전탐색(brute force), dfs 사용하여 min 값을 계속 갱신한다. - 참고블로그 : #백준_10971 외판원 순회2 - Java 소스 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20..

[백준] 10819번 자바 차이를 최대로

문제 출처 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 접근 방식 및 풀이 - N의 값이 최대 8까지 이므로 배열로 만들수 있는 모든 수열들의 케이스를 조사(순열 개념 적용) - 각 배열로 구한 값들중 가장 큰 값을 출력한다. 소스 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ..