MVC 패턴이란? MVC 패턴은 Model - View - Controller 의 약어로, Model(모델), View(뷰), Controller(컨트롤러)로 구성된 디자인 패턴이다. 애플리케이션 구성요소를 모델, 뷰 컨트롤러 세가지 역할로 구분하여 각각의 구성요소에만 집중해서 개발 할 수 있다. MVC 패턴의 장단점 + 기능별로 코드를 분리하기 때문에 가독성과 재사용성이 높다. + m,v,c 로 역할을 구분하기 때문에 협업 시 분업이 가능하다. - 복잡해질수록 모델 - 뷰의 의존성이 강해진다. MODEL - 모델 애플리케이션 데이터인 DB, 상수, 변수를 의미한다. 사용자가 편집하길 원하는 모든 정보를 가지고 있어야 한다. 상태의 변화가 있을 때 컨트롤러에게 데이터를 전달하며, 뷰에 직접적으로 접근할 ..
Enum 이란?enum은 'Enumeration' 의 약자로 열거, 목록 이라는 뜻을 가지고 있다. 말 그대로 관련있는 상수들의 집합이며 JAVA에서는 final로 String, int 등을 나타내는 일정 개수의 기본 자료형의 값을 고정할 수 있다. 예를 들어 요일, 계절, 과목 등을 나타낼 때 쓰일 수 있다. Enum 장점허용 가능한 값을 제한 할 수 있다.수정 시 변경 범위가 최소화 된다. (enum만 수정하면 됨)컴파일 시 데이터 타입 및 유효성 체크를 할 수 있다.코드가 단순해지고 가독성이 좋아진다.인스턴스의 생성과 상속을 방지하여 상수값의 안전성이 보장된다. Enum 구현1. enum 안의 값 꺼내오기 Day.java (Enum 키워드)public enum Day { MONDAY, TUESDAY..
싱글톤 패턴이란대표적인 디자인 패턴 중 하나로 한 클래스에 한 인스턴스를 가지는 패턴이다. 소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. - 출처 : 위키백과 - 싱글턴 패턴 생성된 인스턴스를 기반으로 다른 모듈에서 공유, 접근하여 사용할 수 있다. 주로 공통된 객체를 여러개 생성해서 사용하는 경우에 쓰이며 대표적으로 데이터베이스 연결 모듈 (DBCP) 가 있다. 싱글톤 패턴의 장점이미 완성된 인스턴스를 기반으로 로직을 짜는 것이기 때문에 비용이 줄어든다. static으로 별도로 고정 메모리 영역을 만든 뒤 인스턴스를 공..
문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한사항 scovill..
큐(QUEUE) 란? 사전적인 의미로 '대기줄' 이라는 의미를 가지고 있다. 큐는 스택과 다르게 포인터가 두군데가 있는데 삽입 연산만 수행되는 rear 와 삭제 연산만 수행되는 front 가 있다. 제일 먼저 들어온 데이터가 가장 먼저 나가는 구조로 FIFO (First In First Out) 이다. 사용예시 은행창구 번호표 대기 프린터 출력 컴퓨터 운영체제의 테스크 스케쥴링 너비 우선 탐색 선언방법 Queue queue = new LinkedList(); queue는 인터페이스만 존재하고 별도의 클래스가 없기 때문에 LinkedList 를 이용한다. 메소드 add(E) 값 추가 성공 시 true, 실패 시 false 반환 저장공간이 부족하면 IllegalStateException 반환 offer(E)..
1. Stack 이란? 2. Stack 사용 예시 3. 선언 방법 3-1 메서드 | Stack 이란? 스택은 '쌓아놓은 더미' 라는 뜻으로 데이터를 차례대로 쌓아두는 모양이다. 스택은 한쪽 끝에서 push() 해서 밀어넣고, 끝에서 부터 pop() 하여 꺼내는 LIFO(후입선출, Last In First Out)이다. 즉, 마지막에 넣은 데이터가 가장 먼저 나오는 형태이다. | Stack 사용 예시 웹 브라우저 방문기록(뒤로가기) 실행 취소(undo) 역순 문자열 만들기 후위 표기법 계산 깊이우선탐색 | 선언 방법 Stack stack = new Stack(); | 메서드 push(E) 값 추가 peek() 가장 상단 값 반환 pop() 가장 상단 값 반환 & 제거 clear() 전체 값 제거 (반환x)..
문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입력예제 s answer "()()" true "(())()" true ")()(" false "(()(" false 풀이 impor..
문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자연..