본문 바로가기
728x90

Programming/Java11

Java 리팩토링(Refactoring)의 7가지 방법과 예제 리팩토링(Refactoring)은 코드의 품질과 효율성을 유지하기 위한 필수 프로세스입니다. 현재 프로젝트가 legacy 코드를 준용하고 있어서, 리팩토링이 필요합니다. 이 포스팅에서는 코드를 리팩토링 하기 위한 몇 가지 방법과 예시를 다뤄보려고 합니다. 아직은 부족하지만, 새로운 방법을 발견하고 학습할 때마다 지속적으로 업데이트할 생각입니다. 코드 리팩토링 방법과 예제 1. 변수 선언과 초기값을 assign 하는 부분이 분리되어 있을 필요가 없습니다. Before: String ssId = ""; long amt = 0L; ssId = svcDto.getSsId(); amt = svcDto.getAmt().longValue(); After: String ssId = svcDto.getSsId(); lo.. 2023. 3. 24.
[다그닥 기사단] 유물 강화 100레벨 달성에 필요한 유물 수의 기대값 계산하기 다그닥 기사단이라는 게임을 시작했습니다. 다그닥 기사단에는 유물이라는 시스템이 있는데, 보석을 사용해서 유물을 뽑을 수 있고, 유물은 공격력, 체력 등의 능력치를 올릴 수 있습니다. 유물 레벨은 100레벨까지인데, 1레벨 올릴 때마다 유물이 한개 소모되고, 레벨업 성공 확률은 100%에서 1%씩 감소합니다. 처음 레벨업할 때는 유물 한개당 거의 1레벨씩 오르는데, 점점 레벨업 확률이 떨어져서 소모되는 유물 수가 늘어납니다. 그래서 총 몇개의 유물이 있어야 100레벨이 될지 궁금해서 계산해보았습니다. 100레벨에 도달하기 위해 필요한 유물의 수 계산하기 결과만 우선 말씀드리자면, 100레벨이 되기위해 필요한 유물의 수는 573개입니다. 단, 개인의 운에 따라 더 적게 들수도 더 많이 들수도 있습니다. 평균.. 2023. 3. 12.
[리뷰][IT] 프로그래밍 대회에서 배우는 알고리즘 문제해결전략 Cos Pro 1급 시험 준비를 하다가 그래프이론, 유클리드 호제법, 동적 계획법 등 머리 굴려도 답이 안 나오는 문제들에 대해 이론적인 정리가 필요해서 빌렸습니다. 도서관에서 컴퓨터 서적 모여있는 곳에서 서성이다, 알고리즘 관련 서적만 모아놓은 곳에서 발견했습니다. 모르고 빌렸는데, 코딩 테스트나 대회 준비하는 분들이 많이 보는 유명한 책이라더군요 다양한 알고리즘과 문제 해결 방법에 대해 예시를 통해 쉽고 자세하게 풀어주어 놓았습니다. 같은 알고리즘에 대해서 예제도 쉬운 것부터 어려운 것까지 다양하게 나와있어서 도움이 되었습니다. 다 보지 못하고 기한이 다되어서 반납했지만, 사두고 읽을 만한 책입니다. 책은 두 권으로 되어있고, 두 권을 합쳐서 1000페이지가 넘는 큰 책입니다 저자 구종만 출판사 인사.. 2022. 11. 23.
[정렬] 3. ArrayList 정렬(Sort) 1. 버블정렬 알고리즘과 2. 배열의 정렬에 이어서 3. ArrayList 정렬에 대해서도 정리해보겠습니다. ArrayList의 정렬 javadoc에는 다음과 같이 나와있습니다. ArrayList 객체의 멤버 함수로 구현이 되어있습니다. sort public void sort(Comparator 2022. 11. 12.
[정렬] 2. Java 배열(Array)의 정렬(Sorting) - 오름차순,내림차순,Comparable, Comparator Java 배열(Array)의 정렬 2022.11.11 - [Programming/Java] - [정렬] 1. 버블 정렬(Bubble Sort) 알고리즘 [정렬] 1. 버블 정렬(Bubble Sort) 알고리즘 정렬 알고리즘의 가장 기초인 버블 정렬에 대해 알아보겠습니다. Java에서 제공되는 Arrays.sort()를 사용해도 되지만, 기본적인 알고리즘은 알아두는 것이 좋을 것 같습니다. 정렬 알고리즘 - 버블 woogong80.tistory.com 앞서 포스팅에서 버블 정렬을 알아봤지만, 매번 정렬하는 함수를 만들어 쓸 수 없으니, Java에서 제공하는 함수를 사용하는 방법을 알아봅니다. 오름차순 정렬 Java 배열은 Arrays.sort() 메서드를 사용하여 간단히 정렬할 수 있습니다. 아래 예제와 .. 2022. 11. 12.
[정렬] 1. 버블 정렬(Bubble Sort) 알고리즘 정렬 알고리즘의 가장 기초인 버블 정렬에 대해 알아보겠습니다. Java에서 제공되는 Arrays.sort()를 사용해도 되지만, 기본적인 알고리즘은 알아두는 것이 좋을 것 같습니다. 정렬 알고리즘 - 버블 정렬 버블 정렬은 배열에 아래와 같은 순서로 숫자가 들어있다고 할 때, int[] num = {1,6,4,2,3,5} 이를 오름차순 정렬하기 위해 가장 처음부터 인덱스를 증가시키면서 인접한 두 개의 원소를 비교하면서 정렬합니다. 아래 그림1.에서 청록색 색칠된 칸이 비교대상이 되는 인접한 두 개의 원소이고, 화살표는 비교 결과 앞과 뒤의 값이 교환되는 경우입니다. 그림 1.처럼 보글보글 거리는 느낌으로 처음부터 끝까지 두 개 원소를 순차적으로 비교하고 교체하는 것을 하나의 단계라고 하면, 주어진 배열에.. 2022. 11. 11.
[Java] Class Math - Math 클래스 주요 메서드 정리 Math 클래스란? 기본 지수, 로그, 제곱근 및 삼각 함수와 같은 자주 사용되는 기본 숫자 연산을 수행하기 위한 메서드를 구현한 클래스입니다. java.lang 패키지에 포함되어 별도 import를 할 필요가 없습니다. static 메서드이므로 Math.abs()와 같이 직접 호출하여 사용합니다. https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html Math (Java Platform SE 8 ) Returns the value of the first argument raised to the power of the second argument. Special cases: If the second argument is positive or nega.. 2022. 11. 6.
[Java] 재귀함수 작성 방법 - 예제와 2가지 고려사항 Cos Pro 샘플 문제 4차 8번은 재귀함수를 작성하는 문제입니다. 너무 복잡해서 이해도 되지 않고, 시험에서 재귀함수를 작성하라는 문제가 나오면 어떻게 풀지 막막해서 재귀함수에 대해 정리해보려고 합니다. ※ 이 내용은 알고리즘 문제 해결 전략(인사이트, 구종만 지음)을 참고하였습니다. 인용 표시가 들어가는 부분은 책의 내용을 그대로 옮겼습니다. 재귀함수??? 우리가 코딩을 할 때, 코드 중 공통적으로 반복되는 부분을 발견할 수 있습니다. 이런 부분은 for문 등으로 묶어서 수행하게 할 수 있지요. 재귀함수는 이런 반복적인 작업을 구현할 때 유용하게 사용되는 개념입니다. 재귀함수란 자신이 수행할 작업을 유사한 형태의 여러 조각으로 쪼갠 뒤 그중 한 조각을 수행하고, 나머지를 자기 자신을 호출해 실행하는.. 2022. 11. 4.
[Java] Class ArrayList<E> 사용법 정리 ArrayList 란? ArrayList는 Java에서 제공하는 컬렉션 프레임워크입니다. 컬렉션 프레임워크는 Java의 자료구조를 표현하고 조작하기 위한 구조를 정의한 것입니다. LIst, Set, Map 등의 Interface가 정의되어있고, 이를 구현한 클래스가 있습니다. 오늘은 그중에서 ArrayList를 알아보겠습니다. ArrayList는 이름과 같이 배열을 List로 구현한 것입니다. Cos Pro 1급 시험을 준비하고 있는데, 배열을 다룰 때 매번 함수를 정의하기가 불편해서 ArrayList를 쓰는 법을 정리해 두려고 합니다. 주요 메서드 아래와 같이 주요 메서드와 결과를 정리해 보았습니다. 0. 객체 생성 ArrayList 객체는 아래와 같이 생성합니다. 컬렉션 프레임워크는 제네릭 타입으로 .. 2022. 11. 1.
728x90