전체 글 (456) 썸네일형 리스트형 [Java] 실행 시간 측정 코드 실행 시간 측정 방법코드를 작성할 때 시간 복잡도를 고려하는 것이 중요합니다. 하지만 O(n) 같은 개념적인 복잡도뿐만 아니라, 실제 실행 시간을 측정하는 것도 필요합니다. 이를 위해 정확한 실행 시간을 측정하는 방법을 정리해 보았습니다. 1. System.currentTimeMillis() , System.nanoTime()public class Main { static final long COUNT = 100_000_000; public static void main(String[] args) { // 시작 시간 측정 long startTime = System.currentTimeMillis(); long startNanoTime = System.. [백준] 숫자놀이 (1679번) 문제 힌트 1. 자료구조배열을 이용한 DP (동적 계획법) 활용목적: 특정 숫자를 만들기 위한 최소 연산 횟수를 기록하여 계산 최적화이유:매번 새로운 숫자를 만들 때, 이전에 계산된 최적의 값(dp[i])을 활용하면 중복 연산을 피할 수 있음최댓값 기반 DP 테이블 크기 설정방법: dp[max * K + 1] 크기의 배열 생성이유:주어진 숫자들을 조합하여 만들 수 있는 최대값은 max * K+1을 추가하여 배열 인덱스를 다루기 쉽게 설정 2. 핵심 아이디어1부터 최댓값까지 반복 탐색1부터 최댓값(max * K + 1)까지 순차적으로 확인현재 숫자를 만들기 위한 최소 연산 횟수(dp 값)을 계산dp[i] > K가 되는 순간, 게임 종료사용할 수 있는 숫자 방문오름차순 정렬된 사용 가능한 숫자 배열을 순회하.. [생성 패턴] 추상 팩토리 (Abstract Factory) 추상 팩토리 패턴(Abstract Factory Pattern)추상 팩토리 패턴은 생성 디자인 패턴(Creational Design Pattern) 중 하나로, 관련된 객체들의 가족(family)을 생성하는 데 사용됩니다.이 패턴은 객체 생성 코드를 캡슐화하고, 구체적인 클래스에 의존하지 않도록 설계하는 데 초점이 맞춰져 있습니다. 추상 팩토리 패턴 특징관련 객체 생성: 서로 관련된 객체를 묶어서 생성하는 데 적합함구체 클래스 의존 제거: 인터페이스나 추상 클래스를 사용하여 객체를 생성함으로써 코드의 유연성과 확장성 높임객체군(Family of objects) 생성: 동일한 제품군의 객체들을 일관성 있게 생성확장성: 새로운 객체군을 추가할 때 기존 코드를 수정하지 않고 확장이 가능 추상 팩토리 패턴 구.. [생성 패턴] 빌더 패턴 (Builder Pattern) Builder Pattern이란?생성 디자인 패턴(Creational Design Pattern) 중 하나로, 복잡한 객체 생성을 단계적으로 수행할 수 있도록 돕는 패턴입니다.클래스가 많은 매개변수를 가지는 경우 객체 생성의 복잡성을 줄이고, 코드의 가독성을 높이는 데 유용합니다.여러 개의 생성자(다양한 매개변수 조합)를 작성하는 번거로움을 해소하며, 유연성과 확장성을 제공합니다. Builder Pattern의 특징유연한 객체 생성: 불필요한 생성자 오버로딩을 줄이고 원하는 값만 설정 가능.가독성: 객체 생성 시 어떤 값을 설정하는지 명확히 알 수 있음.불변성 유지: Builder를 통해 객체를 생성하면, 생성된 객체는 변경 불가능(immutable)하게 유지 가능.확장성: 새로운 필드 추가 시 기존 코.. [Java] SinglyLinkedList 구현 LinkedList란?LinkedList는 배열과 달리 데이터를 저장하는 선형 자료구조입니다. 각 요소(노드)는 데이터와 다음 노드를 가리키는 포인터(주소)를 포함하고 있으며, 자바의 LinkedList는 이중 연결 리스트(doubly linked list)로 구현되어 각 노드가 이전 노드와 다음 노드의 주소를 모두 저장합니다.노드들은 동적으로 메모리가 할당되며, 연속적인 메모리 주소를 가지지 않습니다. LinkedList의 특징동적 크기 조절LinkedList는 배열과 달리 크기를 미리 지정할 필요가 없습니다. 노드가 추가되거나 삭제될 때 메모리를 동적으로 할당하거나 해제합니다.순차적 접근각 노드는 연결된 다음 노드의 주소를 통해 접근하기 때문에, 특정 위치의 데이터를 찾으려면 시작 노드부터 순차적으로.. [백준] 수 묶기(1744번) 문제 힌트1. 자료구조음수, 양수 리스트음수는 음수끼리 양수는 양수끼리 곱을 하여 관리하기 위해 자료구조 분리이유 : 음수의 갯수가 홀수 일 때 관리의 번거로움이 생김Collections.sort()리스트에 값을 전부 저장하고 정렬하기이유: 1 2 3 4 5가 주어졌을 때 가장 큰 수는 5*4 + 3*2 + 1이 가장 높은 수 이기 때문boolean zeroFlag0이 있는지 여부를 저장이유 : 0은 사용하지 않는 음수가 있을 때 곱을 하여 해당 음수를 0으로 만들어 가장 큰 수로 만들 수 있음0이 2개 이상일 경우 몇 개가 있어도 의미가 없는 숫자이기 때문에 boolean으로 관리 2. 핵심 아이디어리스트를 사용한 정렬 및 분류음수와 양수를 분리하여 정렬하고 각각 계산하므로, 구조가 간단하면서도 효율적.. [Java] 객체 null 체크 Objects.isNull(), obj == null 스프링 강의를 보던 중 Objects.isNull()을 사용하여 null을 체크하는 것을 보고 뭔지 싶어서 정리를 했습니다. Objects.isNull()이란?해당 객체의 값이 null인지 확인하고 null이면 true를 null이 아니면 false를 반환합니다.public class Main { public static void main(String[] args) throws IOException { Integer n1 = null; Integer n2 = 10; System.out.println(Objects.isNull(n1)); System.out.println(Objects.isNull(n2)); }} obj == null 과 차.. [정보처리산업기사] 객체 지향 설계 원칙 SOLID 객체 지향 설계 원칙시스템 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 5가지 원칙입니다.앞 글자를 따 SOLID 원칙이라고도 불립니다. 1. 단일 책임 원칙(Single Responsibility Principle, SRP)클래스는 하나의 책임만 가져야 한다.응집도는 높고 결합도는 낮게 설계해야 한다.A클래스와 B클래스가 서로 의존적일 때 A클래스가 변경이 된다면 B클래스 또한 변경이 됩니다.시스템 변경이 되었어도 A클래스만 변경이 되어야 하는 것이 SRP입니다. 2. 개방-폐쇄 원칙(Open-Closed Principle)확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다.기존 코드를 변경하지 않고 기능을 추가할 수 있도록 설계를 해야하며 공통 인터페이스를 하나의 인터페이스로 묶어 캡.. 이전 1 2 3 4 5 6 ··· 57 다음