CODe_
'Java' 태그의 글 목록

Java

언어/JAVA

try-with-resources와 native 영역

소개 try-with-resources 구문과 native 자원의 관계 이해 대상 독자: 초보 Java 개발자 자바 관련 스터디를 하고 있는데, 이번엔 try-with-resources와 관련된 주제로 얘길 나누었습니다. (이 주제는 이펙티브 자바, 자바의 신에서 꼭 등장하는 내용이기도 합니다) 정말 별 것 아닌 것 같지만, 해당 주제로 대화를 나누기 위해 정말 광범위하고 깊은 키워드들이 등장했었습니다. GC, JVM, JNI, native 영역, FileDescriptor 등등 기본적인 개념에 대해서는 알고 있었으나, 이들의 관계에 대해 간단하게 살펴보고 왜 try-with-resources를 쓰는지에 대해 좀 더 자세하게 알아보겠습니다. (FileDescriptor는 다른 포스팅에서 다룰 예정이라 이..

Tech/Spring

Spring 환경에서 Docker run으로 jar에 argument 전달하기

사전 요구 지식 Docker에 대한 이해 및 실행하는 방법과 Dockerfile 사용법 Spring boot에서 cmd로 값을 입력 받아 사용하는 방법 cmd에서 java jar로 arguments를 전달하는 방법 환경 Spring boot 2.5.7 사용 gitlab-ci로 jar를 docker image로 만들어 빌드합니다. 여기서, 민감정보(datasource.password 등)는 사용자가 직접 입력하는 방식을 채택했으며 아래 사진처럼 username과 password는 사용자가 입력하는 값을 그대로 가져와 사용합니다. 이 때, docker run으로 해당 argument에 값을 전달하려면 어떻게 해야하는지 이 포스트에서 설명합니다. 하지만 해당 포스트에서 spring boot 내에서 argume..

언어/JAVA

[Java] Error와 Exception에 대해

목차 이런 분들이 읽으시면 좋습니다 Checked, Unchecked를 처음 듣거나 긴가민가 하시는 분 Error와 Exception을 왜 함께 다루는지 궁금하신 분 실습 이전에 이론적 개념이 필요하신 분 왜 Error와 Exception을 함께 다루는가? Exception을 계속 타고 올라가다보면 최상위에 Throwable이 있습니다. 이 Throwable 하위엔 2가지 자식 클래스가 존재하는데, 각각 Error 클래스와 Exception 클래스입니다. 이미 다른 블로그 포스팅에 항상 Exception과 Error를 함께 설명하는 글이 많을텐데요, Throwable의 하위 자식이기 때문에 언급을 하고 넘어가는 것 같습니다. Error Class 에러는 간단하게 짚고 넘어가겠습니다. 백준과 같은 oj사이..

OnlineJudge

백준 2263 트리 풀이 pypy3, python3, java

문제로이동 목차 문제 설명 재귀함수를 이용해 풀었습니다. 각 order의 특징을 살펴보면 inOrder : LVR (왼쪽-뿌리-오른쪽) postOrder : LRV (왼쪽-오른쪽-뿌리) preOrder : VLR (뿌리-왼쪽-오른쪽) 이러한 특징을 가졌는데, inOrder와 postOrder를 잘 보시면 구조가 다르기 때문에 이를 이용하여 풀어야 합니다. 1. postOrder는 뿌리의 위치가 항상 맨뒤에 존재합니다. 그래서 매 번 가장 마지막 노드를 가장 먼저 출력합니다. 2. 해당 뿌리 위치 왼쪽까지를 재귀합니다. 3. 해당 뿌리 위치 오른쪽부터 재귀합니다. 4. 1~3을 반복합니다. 문제 후기 pypy3와 python3의 차이점을 몸소 경험했던 문제였습니다. 신선한 충격이었고 덕분에 멘탈이 탈탈 털..

OnlineJudge

백준 1018 체스판 다시 칠하기 풀이 python, java

문제로이동 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 목차 문제 설명 8*8 크기의 체스판을 완전탐색합니다. 즉, 크기가 8*8보다 더 큰 경우 위치를 옮겨가며 확인해야 합니다. 왼쪽부터 오른쪽으로 스캔하듯 모두 훑어줍니다. 가로 탐색이 끝났다면 이제 세로축을 한 칸 증가시켜야겠죠? 한 칸 내린후 위와 동일하게 오른쪽으로 쭉 가야합니다. 어떤 로직인지 이해 하셨나요? 그럼 최종적으로 아래 그림처럼 탐색을 마칩니다. 자. 이제 위와같은 체스판이 아닌 흑백이 섞인(또는 뒤죽박죽) 체스판 모양이 입력됩..

OnlineJudge

백준 10096 세 친구 풀이 python, java

문제로이동 10096번: 세 친구 준규, 해빈, 진욱이는 다음과 같은 게임을 한다. 먼저, 준규가 문자열 S를 고른다. 그 다음, 해빈이는 S의 뒤에 S를 붙인 새로운 문자열 T를 만든다. 마지막으로 진욱이는 문자열 T의 어딘가(시작이 www.acmicpc.net 목차 테스트케이스 백준에서는 첫 번째 테스트케이스만 제공됩니다. NOT IMPOSSIBLE과 NOT UNIQUE 조건이 명시는 되어있는데 뭔가 이상해서 찾아보니 입력이 안된건지 더 있길래 가져왔습니다. 참고하시면 됩니다. 문제 설명 자세한 풀이 방법은 소스코드 Python의 주석처리를 참고하시기 바랍니다. 처음엔 모든 알파벳이 같은 경우를 생각하지 않고 아니 이게 맞는데 왜 틀려?? 라고 생각했다가 3번의 WA를 받고 깨우쳤습니다.. Pytho..

OnlineJudge

백준 1002 터렛 풀이 python, java

문제로이동 목차 문제 설명 알고리즘 문제라기 보다는 수학에 많이 가깝습니다. 두 원을 그려서 교점(겹치는 점)을 찾아내는 문제이며, 정답률이 많이 낮은 것으로 봐서는 여러 경우의 수를 고려하지 못했던 것 같습니다. 물론 저도 정답률 낮추는 데 한 몫 했습니다 ^^ 소스코드도 위와 같은 순서로 분리되어 있습니다. 1. 원이 완전히 겹치는 경우 (출력값 0) 두 원의 거리가 0이면서 반지름도 같은 경우를 말합니다. 2. 원이 한쪽 면만 닿는 경우 (출력값 1) (내접) 두 원의 거리 == 원1 반지름 + 원2 반지름 단, 원1 반지름과 원2 반지름의 길이를 비교해서 작은 값, 큰 값으로 분류해도 되지만 편의상 절대값 abs를 이용했습니다. (외접) 두 원의 거리 - r1 = r2 아래 그림을 참고 바랍니다...

OnlineJudge

백준 2217 로프 풀이 python, java

문제로이동 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 목차 문제 설명 그리디 문제는 규칙을 파악하는게 중요합니다. 로프 여러개를 사용해 병렬로 무게를 들 수 있습니다. 이 때, W/K(갯수) 만큼의 무게가 걸리게 됩니다. 즉, {나를 포함한 나보다 무게가 큰 로프 수 * 내 로프 = 최종 무게}가 성립됩니다. 1 5 3 2 4 이렇게 입력되었다고 가정하면 이 Array를 정렬해 줍니다. 5 4 3 2 1 내림차순이 편하긴한데, 오름차순도 index 접근값만 바꿔주면 되기 때문에 크게 상관없습니다..

OnlineJudge

백준 10808 알파벳개수 풀이 python, java

문제로이동 목차 아직 Java가 많이 서툴고, 변수나 리스트 배열 등 기초적인 스킬이 부족해 난이도 가리지 않고 풀고 있습니다. 언제든 피드백 환영입니다. 더 나은 스킬이 있다면 배우겠습니다. 소스 코드 Python - input으로 문자열을 입력받습니다. - 알파벳 a ~ z까지 총 26개이므로 lst배열에 [0]을 총 26개로 초기화 했습니다. - ord(문자)는 문자를 숫자로 바꿔주는 함수이므로 알파벳 a의 아스키코드인 97을 빼주어 lst 배열의 index와 맞춰주었습니다. s = input() lst = [0]*26 for i in s: lst[ord(i)-97]+=1 for i in lst: print(i,end= ' ') Java8 - python에서는 3번째 코드라인 String에 Char..

OnlineJudge

백준 17135 캐슬디펜스 풀이 python, java

문제로이동 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 목차 문제 설명 비슷한 레벨의 BFS문제보다 어려웠다고 생각합니다. 성벽은 가장 아래 행(안보이는 곳)에 존재합니다. 해당 성벽에는 아처가 3명 있습니다. 이 아처의 가능한 모든 위치를 고려하셔야 합니다.(3중 for문으로 해결) 적군은 1턴(아처가 공격하고난 후) 후에 성벽으로 1칸 전진합니다. 성벽에 닿게 되면 그냥 사라집니다. 아처는 동일한 거리에 위치한 적군이 여러명일 경우, 가장 왼쪽에 있는 적군을 우선으로 죽입니다. 이 경우에 한 적군이 아처 여러명에게..