목록Java Note (89)
럿고의 개발 노트
[프로그래머스] 코딩테스트 연습 모의고사 간략한 문제 풀이 수포자1, 2, 3의 답은 일정 패턴을 가지고 있습니다. 일정 패턴을 찾아서 계속 비교하면 됩니다. 최대값을 구하기 위해서 최근 공부하고 있는 stream을 사용했습니다. 모의고사 문제의 알고리즘은 완전 탐색입니다. 완전탐색 자세히 보기 처음에 반복문으로 최대값을 찾다가, stream으로도 구할수 있기 때문에 stream으로 변경을 했는데, 둘 중에 뭐가 더 효율성이 좋을지는...ㅎㅎ 효율성이 너무 떨어지네요. 알고리즘 문제를 풀면서 효율성도 생각을 해야 되는데, 효율성을 높일 수 있는 방법을 연구해야 되겠습니다 ㅠㅠ 문제 및 풀이 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. ..
[프로그래머스] 코딩테스트 연습 완주하지 못한 선수 간략한 문제 풀이 검색 알고리즘이라고 생각하여, 정렬 후 하나씩 비교하는 것이 더 빠르다고 생각했습니다. 프로그래머스에서 해시로 구분이 되어있어서 정렬한 후와 해시로 푼 경우 두가지를 해봤습니다. Arrays.sort()로 배열을 정렬하였습니다. hash 알고리즘은 너무 어렵네요 ㅠㅠ 뭔가 더 아름답게(?) 할수 있을 것 같은데.... 아직 실력 부족인듯..ㅠㅠ 해쉬 Java HashMap은 어떻게 동작하는가? 어려운 개념이지만, 위의 글을 한번 보는 것이 많은 도움이 될듯.. 문제 및 풀이 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴..
템플릿 메소드 패턴(Template Method Pattern) 공통 추상 클래스 public abstract class Person { void readyToBattle() { startBodyTraining(); prepareWeapon(); prepareArmor(); if (isUsingPrepareOther()) { prepareOther(); } } final void startBodyTraining() { System.out.println("체력 단련!"); } abstract void prepareWeapon(); abstract void prepareArmor(); boolean isUsingPrepareOther() { return false; } void prepareOther() {..
Spring vs Spring Boot Spring 정의 자바 플랫폼, 엔터프라이즈 개발을 편하게 해주는 오픈 소스 애플리케이션 프레임워크 종속 객체를 생성해주고, 조립해주는 도구 POJO(Plain Old Java Object) BEAN CONTAINER POJO(Plain Old Java Object) : 말 그대로 해석하면 오래된 방식의 간단한 자바 객체라는 말로, 이상적으로 POJO는 자바 언어 사양 외에 어떠한 제한에도 묶이지 않은 자바 오브젝트 POJO Wikipedia BEAN : Spring이 관리하는 인스턴스로 개발자가 직접 인스턴스를 생성, 호출, 삭제하는 것이 아니라 Spring이 제공하는 Container를 통해 관리되는 인스턴스 특징 자바 객체를 직접 관리하기 때문에, 라이프 사이..
[프로그래머스] 코딩테스트 연습 문자열압축 간략한 문제 풀이 입력값은 '입력값/2' 이하만 압축 가능합니다. (예를들어 8글자인 경우 4글자 이하, 7글자인 경우에는 3글자) 한글자 부터 입력값/2글자까지 반복을 하여, 압축을 하고 Math.min()을 이용하여 최소값을 찾게 됩니다. subString()을 이용하여 문자열을 잘랐습니다. StringBuffer를 사용하긴 했지만, compareStr1, 2에도 사용했다면, 시간이 덜 걸리게 나올수 있었을텐데, 쉽지가 않네요 ㅎㅎ 개인적으로 보안은 역시 어렵습니다. ㅠㅠ 문제 및 풀이 문제 설명 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공..
[프로그래머스] 코딩테스트 연습 스택 / 큐 탑 스택이란? Stack은 사전적의미로 '더미', '쌓아 올림'이라는 의미를 가지고 있음. 즉, 데이터를 쌓아올리는 형태로 저장하여 추출할때는 맨 위에 있는 데이터를 먼저 꺼내는 형태로 후입선출(LIFO - Last In First Out) 자료구조에서 꼭 알아둬야 하는 개념임. Java Stack에 대한 정리 문제 및 풀이 문제 설명 수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 탑이 왼쪽으로 동시에 레이저 신..
[프로그래머스] 자바 입문 Part4. 배열 1. 배열만들기 1차원 배열 배열은 같은 데이터 타입을 가진 연속된 메모리 공간으로 이루어진 자료 구조. 같은 데이터 타입을 가진 여러개의 변수가 필요할때 사용 선언방법 데이터타입[] 배열명 = new 데이터타입[배열길이]; // 선언 데이터타입[] 배열명 = { 데이터값 }; // 선언 및 초기화 public class ArrayExam { public static void main(String[] args) { int[] array1 = new int[100]; // 타입[] 배열명 = new(객체생성) 타입[길이] array1[0] = 50; // 값 넣는 법, index는 0번부터 시작 array1[10] = 100; int[] array2 = new ..
[프로그래머스] 자바 입문 Part3. 제어문 1. if문 if 조건문 조건식의 연산 결과에 따라 블록 내부 문장 실행 여부 결정 결과가 true일 경우에만 실행문이 실행 if문의 { }(블럭)을 생략 가능. 단, 실행문은 단 한줄만 포함 if(조건식) { 실행문; 실행문; } if-else 문 조건식이 true일 경우 if블록 실행문이 실행되고, false일 경우 else블록의 실행문이 실행 if(조건문) { 실행문; 실행문; } else { 실행문; } if / else if / else 문 처음 if문 조건식의 조건문이 true일 경우 처음 if문 블록이 실행되고, false일 경우 다음 조건식의 결과에 따라 실행 else if문의 수는 제한이 없지만, 많은 else if문은 실행 속도를 느리게 함..
[프로그래머스] 자바 입문 Part2. 변수와 계산 1. 변수 변수 자바는 강형 언어로써 모든 변수의 타입이 컴파일 시에 결정됨. 변수란, 값을 저장할 수 있는 메모리 공간 / 값이 변할 수 있는 수 변수의 선언 타입 변수명; 명명 규칙 변수의 이름을 정할 때 자바 언어에서 정해 놓은 규칙 Java Code Conventions Naming Java Code Conventions 식별자(identifier)는 클래스, 메소드, 변수 등 다양한 대상에 대해 이름이 붙여지는 경우 그 이름을 뜻함 식별자 명명 규칙 하나 이상의 글자로 이루어져야 함 첫 번째 글자는 문자이거나 '$', '_'이어야 함 두번째 이후의 글자는 숫자, 문자, '$', '_'이어야 함 '$', '_'외 특수문자 사용 불가능 길이 제한 ..