목록Java (152)
Lewis's Tech Keep
내가 구현하려던 것 : TDD 기반 프로그램 개인적으로 어려웠던 부분 null return 에 대한 것을 의식하면서 진행 (아직 체득화되지 않음) final 키워드 잊지않고 적용 (불변 객체로 만드는 것은 컴파일 시 이득뿐만 아니라 내부 상태가 변하지 않음이 결정되고 thread-safe 하기까지 하다!) https://mangkyu.tistory.com/131#:~:text=%EB%B6%88%EB%B3%80%20%EA%B0%9D%EC%B2%B4%EB%8A%94%20%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9C%BC%EB%A1%9C,%EB%A5%BC%20%EB%8B%A4%EC%8B%9C%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8..
내가 구현하려던 것 : 문자열 덧셈 계산기 개인적으로 어려웠던 부분 static으로 개발을 잘 안 해 봐서 뭔가 만들어도 best가 아니라는 느낌을 강하게 받음 static을 쓰면 메서드나 변수가 (내부 static 클래스 제외) 클래스에 붙는다. 프로그램 실행 시 생성되기 때문에 문제만 없다면 빠르다. 여러 번 같은 로직을 실행해야 하거나 같은 값을 유지할 필요가 있을 경우 생각한다. static 관련 https://vaert.tistory.com/101 parameterizedTest 이용법 https://kingds.tistory.com/40 https://gmlwjd9405.github.io/2019/11/27/junit5-guide-parameterized-test.html [Java] Stat..
- 링크 : https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net - 풀이 1. 시작을 기준으로 시작부터 이동하면서 다음 블록의 높이가 더 높아지는 것을 찾는다. (왼 -> 오) 2. 찾으면서 더 낮은 블록이나 없는 블록들은 차를 합산 해 둔다. 3. 더 높아진 것을 찾으면 합산 해 둔 값을 answer에 더한다. 4. 끝까지 이동했다면 가장 높은 점 idx를 기록 해 둔다. ( 왼 -> 오, 오 -> 왼 할 때 같은 높이의 기둥이..
- 링크 : https://programmers.co.kr/learn/courses/30/lessons/87377 코딩테스트 연습 - 10주차_교점에 별 만들기 [[2, -1, 4], [-2, -1, 4], [0, -1, 1], [5, -8, -12], [5, 8, 12]] ["....*....", ".........", ".........", "*.......*", ".........", ".........", ".........", ".........", "*.......*"] [[0, 1, -1], [1, 0, -1], [1, 0, 1]] ["*.*"] [[1, -1, 0], [2, -1, 0], [4, - programmers.co.kr - 참고 링크 : https://taehoung0102.ti..
- 링크 : https://programmers.co.kr/learn/courses/30/lessons/86971?language=java# 코딩테스트 연습 - 9주차_전력망을 둘로 나누기 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr - 풀이 : 문제에서 트리가 보장되어 있기 때문에 하나를 끊으면 무조건 둘로 나뉜다. : 그리고 노드의 총 갯수가 n이기 때문에 한 쪽을 dfs든 bfs든 돌려서 개수를 구하면 나머지 한 쪽은 n - 한 쪽 개수이다. 이를 이용해서 풀었다. : for 를 2번 돌면서 edge(간선)가 하나씩 없는 인접 리스트를 각 루..
- 링크 : https://programmers.co.kr/learn/courses/30/lessons/60062?language=java 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하 programmers.co.kr - 참고 링크 : https://gre-eny.tistory.com/168 [java] 프로그래머스 (외벽 점검) Level 3 Problem : https://programmers.co.kr/learn/courses/30/lessons/60062 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 스카피는 레스토랑 내부..
concurrentHashMap의 유래 - 일반적 hashmap은 thread-safe 하지 않다. (=멀티 쓰레드 환경에서 자원의 안정성, 동시성을 보장할 수 없음) - thread-safe 한 hashmap의 구조를 위하여 JAVA 1.5 버전 이전에는 hashTable 이나 synchronized map 이 쓰였다. - concurrentHashMap은 JAVA 1.5 버전부터 소개되었다고 한다. Hashtable, synchronized map과 concurrentHashMap의 차이 - hashtable, synchronized map은 동기화 시 전체에 lock을 걸지만, concurrentHashMap은 일부에만 lock을 건다. - concurrency level에 기반해 map을 여러 파..
- 링크 : https://programmers.co.kr/learn/courses/30/lessons/86491?language=java 코딩테스트 연습 - 8주차_최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr - 풀이 : - 구하는 정답이 가로 길이, 세로 길이의 곱이므로 가로가 무엇이 될 지, 세로가 무엇이 될 지는 고려하지 않아도 된다. - 그리고 명함을 돌린다는 것은 가로와 세로의 길이를 swap 한다는 뜻으로 바꿔 말할 수 있다. - 따라서 주어진 2개의 길이 (가로, 세로) 중 큰 값의 최대값, 작은 값을 최대값을 구..