전체 글
-
[프로그래머스] 자물쇠와 열쇠 (07.26)algorithm/프로그래머스 2020. 7. 26. 16:31
문제 https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 접근법 저번에 풀었던 적이 있는데도 다시 풀기가 어려웠다. 저번에는 dfs를 통해서 배열을 90도로 돌렸는데 이번엔 순수 포문만을 사용했다. 열쇠의 모든 부분이 자물쇠와 겹쳐야 하는 것이 아니고 상하좌우로 움직여서 열쇠의 일부분만을 결합시킬 수도 있다. 따라서 열쇠와 자물쇠가 모두 들어갈 수 있는 큰 배열을 만들고 열쇠를 삽입하며 가능성을 확인한다. solution 메소드에선 배열을 90도로 돌리고, 배열..
-
[프로그래머스] 2xN 타일링 (07.25)algorithm/프로그래머스 2020. 7. 26. 00:00
문제 https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 �� programmers.co.kr 접근법 dp문제의 가장 기본이 되는 문제이다. 점화식은 dp[n] = dp[n-1] + dp[n-2]로 도출할 수 있었다. n-1이 되는 경우는 1x2 타일이 하나 들어갈 경우, n-2가 되는 경우는 2x1 타일이 위아래로 두개 들어간 경우가 해당된다. n-2일때 1x2타일이 좌우로 두개 들어가는 가능성을 생각할 수도 있는데 이 가능성은 ..
-
[PROGRAMMING] Gradleprogramming 2020. 7. 25. 18:14
Gradle groovy 언어를 사용한 빌드툴. ( 빌드, 테스트, 배포 자동화 ) - Ant처럼 유연한 범용 빌드 도구 - 멀티 프로젝트에 사용하기 좋음 - Apache Ivy에 기반한 강력한 의존성 관리 - 원격 저장소나 pom, ivy 파일없이 연결되는 의존성 관리 지원 구성 모든 빌드는 하나 이상의 project로 구성. 또한 project는 하나 이상의 task로 구성됨 ( task는 빌드를 수행할 때 하나의 작업 단위를 의미 ) - Projects : Tasks의 집합체. build.gradle을 일컫기도 하며 단일 혹은 멀티 프로젝트로 구성할 수 있음 - Tasks : 프로젝트에는 하나 이상의 태스크가 필요함. 각각의 태스크는 빌드를 수행하는 작업의 일부라고 볼 수 잇으며 상호 의존한다. 하..
-
[PROGRAMMING] Mavenprogramming 2020. 7. 25. 17:26
Maven - Maven은 자바용 프로젝트 관리 도구로 Apache Ant의 대안으로 만들어졌다. - Ant와 마찬가지로 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이며 많은 편리함과 이점이 있어 널리 사용됨. - 'POM.xml'이라는 파일에 필요한 라이브러리를 정의해놓으면 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는 데에 필요한 다른 라이브러리까지 관리하여 네트워크를 통해서 자동으로 받아준다. - Maven은 중앙 저장소를 통한 자동 의존성 관리를 한다. - 간단한 설정을 통한 배포 관리가 가능하다. 생명주기 메이븐 실행 단위를 골(Goal)이라고 하며 골들이 상호 연관해 실행되는데 그러한 관계를 메이븐 골의 생명주기라고 한다. Clean validation -> compile ->..
-
[PROGRAMMING] 빌드와 빌드 도구programming 2020. 7. 25. 16:12
빌드 소스 코드에서 실행가능한 애플리케이션으로 변환하는 과정 또는 그에 대한 결과물 개발자가 작성한 소스 코드 (.java), 프로젝트에서 쓰인 각각의 파일 및 자원 (.xml, .properties, .jpg)을 JVM이나 톰캣 같은 WAS가 인식할 수 있는 구조로 패키징하는 과정 및 결과물 빌드 도구 ( Build Tool ) 소스 코드에서 컴파일, 테스트 등을 통해서 실행가능한 애플리케이션을 자동 생성해주는 프로그램 빌드 자동화는 소프트웨어 개발자가 일상 업무에서 수행하는 다양한 작업을 자동화 하는 것 1. 종속성 다운로드 ( 라이브러리 자동 추가 및 관리 ) 2. 소스코드를 바이너리 코드로 컴파일 3. 바이너리 코드를 패키징 4. 테스트 실행 5. 배포 빌드 도구를 왜 사용하는가? 웹, 앱 프로그..
-
CHAP2. 동작 파라미터화 코드 전달하기book/모던 자바 인 액션 2020. 7. 24. 21:47
동작 파라미터화 : 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록. 이 코드 블록은 나중에 프로그램 실행 중에 호출한다. 즉, 자주 바뀌는 요구사항에 효과적으로 대응할 수 있다는 뜻 1. 변화하는 요구사항에 대응하기 1). 첫 번째 시도 : 녹색 사과 필터링 private enum Color { GREEN, RED } private static List filterGreenApples(List apples) { List result = new ArrayList(); for(Apple apple: apples) { if(Color.GREEN.equals(apple.getColor())) { result.add(apple); } } return result; } 위의 코드는 녹색 사과를 선택하도록 구..
-
[프로그래머스] N으로 표현 (07.24)algorithm/프로그래머스 2020. 7. 24. 19:05
문제 https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 접근법 문제 분류는 DP로 되어있지만 DFS로 해결하였다. 그냥 사칙연산만 있었다면 간단했을텐데 55, 555처럼 숫자를 이어 붙이는 것까지 가능해서 좀 복잡했다. tmp라는 변수를 두고 그 변수에 55, 555같이 이어붙여지는 숫자를 넣어주었다. 8개 이상의 숫자는 사용할 수 없으므로 반복문은 8까지만 돌렸다. 코드 class Solution { private int min = Integer.MAX_VALUE; private int N = 0; private int number = 0; public int solution(int N,..
-
[SPRING] Spring vs. Spring bootstudy/spring 2020. 7. 23. 16:44
Spring이란? Spring이란 과거 EJB를 대체하는 framework로써 세상에 나왔다. "spring은 설정이 반이다"라는 말이 있을 정도로 설정하는 것에 있어서 어려움이 많았으나 - 경량 컨테이너 - IoC ( Inversion of Control : 제어의 역행 ) - DI ( Dependency Injection : 의존성 주입 ) - AOP ( Aspect-Oriented Programming : 관점 지향 프로그래밍 ) 위 네가지의 강력한 장점을 지니고 있기 때문에 대표적인 Java Framework로 자리잡았다. 거기에 스프링의 단점을 해결하고자 만들어진 것이 바로 Spring Boot다. Spring Boot는 환경 설정을 최소화해주어서 개발자가 비즈니스 로직에 집중할 수 있도록 하여..