전체 글

    BOJ 1082 - 방번호

    www.acmicpc.net/problem/1082 1082번: 방 번호 문방구에서 파는 숫자의 개수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 문방구에서 파는 숫자는 0보다 크거나 같고, N-1보다 작거나 같은 정수이다. 예를 들어, N=4이면, 문방구에서 파는 www.acmicpc.net 문제를 푸는 전반적인 아이디어는 이렇다 먼저 주어진 숫자에서, 첫번째 인덱스에서 부터 마지막번째 인덱스까지 가장 작은 수 first 두번째 인덱스에서 부터 마지막번째 인덱스까지 가장 작은 수 second 를 잡는다. 이 두 숫자를 잡아야 하는 이유는, 첫번째로, 가능한 비용범위 내에서 최저값을 잡아내기 위함이다 (문자열로 일정한 틀을 잡아줘야 최댓값으로 갱신이 가능하기 때문임, 물론 이는 구현 방법에 따..

    Design Pattern - Adapter Pattern

    본 포스팅의 내용은 아래의 인프런 강의를 참조하여 작성되었습니다. (www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4/dashboard) - Adapter Pattern : 어댑터 라는 것은, 사전적 으로는 "기계나 기계 따위를 다목적 으로 사용 하기 위한 보조 기구 또는 그것을 부착 하기 위한 보조 기구" 로 해석 된다 일상 생활 에서, 해외여행시에 챙겨가는 볼트 변환기 같은 것을 어댑터라고 표현하기도 한다. 즉, 어댑터라는것은 호환이 되지 않는 무언가를 호환이 되게 만들어주는 보조장치라고 볼 수 있다. 디자인 패턴에서의 어댑터 패턴도 어떤 클래스 에서 제공하지 않는 (사용자가 원하는) 기능을..

    Maven 이란

    참고한 강의 : www.udemy.com/course/spring-hibernate-tutorial/ - Maven : Maven 은 자바 프로젝트 관리 툴로, 프로젝트와 프로젝트 내부에 필요한 의존성들에 대해서 빌드하는데 사용된다. Maven 같은 툴이 없이 자바 프로그램을 개발한다면, 자바가 기본적으로 제공하는 라이브러리 외의 내용들을 추가하고 싶을때 매번 JAR 파일을 다운 받아서 프로젝트에 넣어준뒤, class path 를 설정해줘야했다. 예를들어, Hibernate ORM 이 필요하면 Hibernate 사이트에가서 JAR 파일 받아오고, Spring 관련 JAR 파일이 필요하면 Spring 사이트에 가서 JAR 파일 받아오고 등등 이런 귀찮은 작업을 매번해줘야 했다. 이런 수고를 덜어주기 위해 ..

    Spring Framework - AOP 코드 예제

    참조한 강의 : Spring & Hibernate For Beginners (www.udemy.com/course/spring-hibernate-tutorial/) 앞선 포스팅에서 AOP 에 대해서 간략하게 알아봤으니 이번에는 몇가지 예제를 살펴보면서 Spring AOP 를 구체적으로 어떻게 사용하는지 알아본다 - @Before Advice 타입에는 아래와 같은 종류가 존재한다. - @Before - @After - @AfterReturning - @AfterThrowing - @Around 이 중에서 먼저 @Before 에 대해 알아본다. @Before 는 Aspect 를 부여할 타겟으로 삼은 메소드가 실행되기 이전에 먼저 실행되는 Aspect 를 정의할때 사용된다. (아래의 예제들은, 아주 간단하게 ..

    Design Pattern - Strategy Pattern

    본 포스팅의 내용은 아래의 인프런 강의를 참조하여 작성되었습니다 (www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4/dashboard) - Strategy Pattern (전략 패턴) * 정의 : 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우, 직접행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장시키는 방법. 즉, 서로 다른 객체가 할 수 있는 행위를 '전략' 이라는 단위로 만들어서, 행위의 수정이 필요할때, 전략만 바꿔서 행위를 수정하는 방식을 전략 패턴 (Stra..

    Design Pattern - Overview

    1. What is Design Pattern 디자인 패턴은 소프트웨어 공학론 안의 좋은 코드를 설계하기 위한 일종의 설계 디자인 방법론이다. 디자인패턴에서 좋은 코드라는것은, "설계적인 관점에서 좋은코드" 를 말한다 확장과 수정이 용이하며, 설계 이후에도 추가적인 유지보수 비용이 적게 들어가는것을 디자인패턴에선 좋은 코드라 부른다 객체지향적인 관점에서 볼 때, 이를 기반으로한 설계 방향성은 "객체간의 응집도는 높이고, 결합도는 낮추며, 요구사항 변경시 코드 변경을 최소화 하도록 설계해야한다" 라고 볼 수 있다. 이에 대해서, 객체지향에서는 SOLID 라는 원칙을 제시한다. 2. SOLID Principle : SOLID 원칙이라는것은 객체지향 5대원칙으로도 불리고, 다음의 5가지 원칙들을 의미한다. 1..

    BOJ 1022 - 소용돌이 출력

    www.acmicpc.net/problem/1022 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net 구현 문제이다. 먼저 맵을 표현하는 배열 int adj[50][5] 를 선언한다. 주의할것은, 문제에서 (0, 0) 의 좌표가 (-3, -3) 이 들어가기 때문에, (0, 0) 을 그대로 적용시키면 틀리게 된다 그러므로, 좌표 맞출때만 신경써서 처리하면된다 그리고 입력 받은 값의 절댓값중 최댓값을 찾아서 그 값만큼 돌아야한다 (소용돌이의 최대갯수임) 그리고 나머지 4방향으로 돌아야 하는데, 소용돌이가 돌아가는 모양새를 보면 얼마만큼 움직여야 하는지 알 수 있게 된다 (그 값을 cnt 를 기준으로 처리) 그리고 4방향으로 돌면서 무..

    BOJ 16120 - PPAP

    www.acmicpc.net/problem/16120 16120번: PPAP 첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다. www.acmicpc.net 이 문제에서는 P 의 갯수를 세면서, 몇가지 조건을 통과하도록 작성하면 된다 먼저 입력받은 문자열을 쭉 돌면서, 현재 인덱스의 값이 P 이면 갯수를 하나씩 늘린다 그리고 앞의 문자가 P 가 두번 나왔으면서 동시에 다음 문자가 P 인 경우 PPAP 에 해당하므로 이 PPAP 를 P 로 치환한다. (앞에 이미 2개를 셌으므로 갯수 하나 감소) 그리고 다 탐색이 끝난 다음 마지막 P 의 갯수가 한개 남았으면, PPAP 에서 마지막 P 라는 의미이므로, PPAP 를 출..