Dev
-
[트리] 백준 트리 순회, 트리의 부모 찾기Dev/알고리즘 2020. 9. 8. 15:16
트리 순회(1991) https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 www.acmicpc.net HashMap 구조로 데이터를 변환한 후, 차례로 전위, 중위, 후위 순회를 수행한 후 결과 StringBuffer를 출력했다. 전위, 중위, 후위의 차이는 해당 문자가 왼쪽 자식을 찾는 모든 과정 이전에 출력될 경우 전위, 왼쪽 자식을 찾는 모든 과정 이후 오른쪽 자식을 찾는 과정 이전에 출력될 경우 중위, 왼쪽 자식을 모두 찾고, 오른쪽 자식도 모두 찾은 이후 출력될..
-
[그래프] 백준 5214Dev/알고리즘 2020. 8. 27. 17:01
BFS를 사용해서 구현하되, 각 역간의 직선 연결로 할 시 java에서는 무조건 메모리 초과가 나게 되는 구조이다. C, C++에서는 최대한 심플하게 인접 리스트를 활용하면 가능할 것으로 보인다. 해결 방법은, 각 역간을 연결하는 정보(하이퍼튜브)를 따로 리스트를 만들어 관리하고 각 역은 해당 하이퍼튜브를 바라보는 방향으로 인접 리스트를 구현하고 Queue를 이용해 최종 역을 찾아가는 과정을 수행하면 되는데, 최종 결과 출력 시 하이퍼튜브에 방문했던 수는 제외하고 각 역 간을 방문했을 때의 숫자만을 가지고 최종 결과를 만들어야 한다. 하이퍼튜브 방문 횟수를 빼기 위해 애초에 count를 계산할 때 역->하이퍼튜브 방문이면 +를 하지 않고, 하이퍼튜브->역 방문일 경우 +하는 방향으로 계산했다. 큐에 모든..
-
[그래프] 백준 5567: 결혼식Dev/알고리즘 2020. 8. 27. 10:38
문제는 간단하게 기준이 되는 1번의 친구들, 그 친구들의 친구들까지 초대(목록에 추가)한다는 내용이다. BFS를 사용해서 구현했다. 트리 구조를 활용해 기준이 되는 1번을 level 0으로 잡고, 1번의 친구들을 level 1, 1번의 친구들의 친구들을 level 2로 잡고 level 2까지의 사람들만 count해서 결과를 출력하는 방향으로 구현했으며 level은 따로 배열을 생성해서 정해줬다. 소스 코드는 다음과 같다. 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 45 46 47 48 49 50 51 52 53 54 55 56 5..
-
[그래프, BFS&DFS] 1260, 2606 문제 풀이Dev/알고리즘 2020. 8. 26. 17:36
두 문제 다 DFS와 BFS, 그래프에 대한 개념 문제라고 생각한다. 1260 문제 풀이 그래프는 인접 리스트, 인접 행렬로 나누어짐 인접 리스트는 각 원소 별로 인접해 있는 주변 원소들을 각 원소와 연결시킨 리스트로 표현하는 것. 인접 행렬은 배열을 선언해 전체 배열 중 인접 원소들을 true 변환하는 것이라고 볼 수 있음. 인접 행렬로 문제를 푼 결과는 해당 페이지에서 확인 가능하다. github.com/saturdayAlgo/acmicpc/blob/master/sw/java/p01260/array/Main.java saturdayAlgo/acmicpc Contribute to saturdayAlgo/acmicpc development by creating an account on GitHub. gi..
-
2020-08-13 오늘의 일지Dev/개발일지 2020. 8. 13. 14:49
Oracle Tablespace를 크게 만드는 두가지 방법 Oracle은 block size에 따라 생성할 수 있는 테이블스페이스 크기의 제한이 존재한다. 공식은 DB_BLOCK_SIZE*4194303 DB_BLOCK_SIZE는 기본 8k, 최대 설정할 수 있는 값은 32K이다. db_block_size maximum allowed size for datafile 2K 8GB 4K 16GB 8K 32GB 16K 64GB 32K 128GB 그래서, 테이블 스페이스를 저 제한 이상으로 만들었을 때 이런 에러가 나온다. 1 2 CREATE TABLESPACE err_space DATAFILE '/u01/app/oracle/oradata/orcl/err.dbf' SIZE 150g; cs 그렇다고 이 이상의 테이..
-
2020-08-12 오늘의 일지Dev/개발일지 2020. 8. 12. 17:48
aws의 s3에서 데이터를 받아와 Spark에서 이를 csv로 저장하는 프로토타입을 만들기로 했다. 구현 방향을 잡기 위해 일단 awssdk(v2)를 사용해 s3의 데이터를 작업용 랩탑에 저장하고, 저장된 데이터들을 Spark를 사용해 csv로 변환 후 저장하는 방향으로 두개로 나눠 구현했다. 1) s3 데이터 -> 로컬 데이터의 형식은 parquet이고, s3의 버킷 내에 폴더/년/월/일/parquet파일 구조로 이루어져 있었다. AwsCredentials을 사용해 인증키들을 설정하고(accessKeyId, secretAccessKey) S3Client Object를 빌드해 가져왔다. (인증키가 이미 PC에 있다면 EnvironmentVariableCredentialsProvider.create()를 ..
-
2020-07-31 오늘의 일지Dev/개발일지 2020. 7. 31. 17:01
서버 모니터링을 위해 작업 수행했던 내역 1) 컴퓨터 현황 모니터링 vmstat -nt 1 vmstat은 리눅스 자원 모니터링 도구로 메모리, cpu 사용률을 조회할 수 있다. 자세한 설명은 여기에. https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_vmstat 리눅스 vmstat - 제타위키 다음 문자열 포함... zetawiki.com 결과 2) 전체 프로세스의 상태 조회 top을 사용해 각 프로세스의 점유 현황을 모니터링한다. top 화면이 나타나면 shift+m을 눌러 메모리 사용 순으로 조회. 3) jps 현재 실행 중인 "java" 프로세스들의 pid 조회용 jps bootstrap의 pid를 따로 저장함. 4) java 프로세스의 정보 확인 ji..
-
2020.07.27 오늘의 일지Dev/개발일지 2020. 7. 27. 13:10
Elastic Search의 설정을 변경하기 위해 elasticsearch.yml을 수정하다가 찾은 에러들. 사용 환경은 Windows 10. 1) 설정 항목명: 설정 값 사이에 한 칸씩 띄워줘야 한다. claster.name:test 가 아니라 claster.name: test 처럼 한 칸씩 띄워줘야 elastic search를 켤 때 에러가 나지 않는다. 2) 위치 설정 Windows의 경우 역슬래시를 경로 지정에 사용하고 있다. Elastic Search는 Java 기반이기 때문에 역슬래시를 사용할 때 항상 한번 더 사용해줘야 한다 (Java에서 역슬래시는 이스케이프 문자의 의미로 쓰임.) path.repo: ["C:\elastic\book_backup\search_example", "C:\elas..