본문 바로가기

분류 전체보기103

[BOJ] 연산자 끼워 넣기(14888) 난이도 실버1 분류 자료구조(스택), 분할 정복 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다. 1+2+3-4×5÷6 1÷2+3+4-5×6 1+2÷3×4-5+.. 2021. 6. 20.
[SoftwareEngineering] 3. 디자인 패턴 - 행위 3. 행위(Beavioral) 패턴 1) 전략 패턴 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화 되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 패턴이다. 이 것만 읽으면 너무 추상적인 말이라 이해가 잘 안갈 수 있다. 코드를 보고 이해한 후 이 말이 무슨 뜻인지 아래에서 다시한번 다뤄보겠다. 예제 코드를 보기전에 구성을 먼저 보고 가자 실선은 interface 사용되는 클래스를 표시한 것이다. 즉, 여기서는 Robot이 Strategy들을 가지고 있으며 어떤 Strategy의 구현체를 사용하는지에 따라 전략을 바꾸는 것이다. 또한, 어떤 로봇인지에 따라 어떤 전략을 쓸지 setter로 지정해 주는 코드를 작성할 것이다. 로봇( 전략.. 2021. 6. 6.
[SoftwareEngineering] 2. 디자인 패턴 - 구조 2. 구조(Structural) 패턴 1) 어댑터 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 즉, 호환성 문제를 해결하기 인터페이스를 사용하여 같이 쓸 수 없는 클래스들을 연결해서 사용하는 것이다. Dog(interface) - Poodle(class) public interface Dog{ public void walk(); public void bark(); } public class Pooddle implements Dog{ @Override public void bark() { System.out.println("멍멍멍"); } @Override pub.. 2021. 6. 5.
[SoftwareEngineering] 1. 디자인 패턴 - 생성 ※ 디자인 패턴 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 재 발생 했을 때 재사용 할 수 있는 해결책 "Don't reinvent the Wheel(바퀴를 다시 발명하지 마라) - 이미 만들어져 잘 되는 것을 처음부터 다시 만들 필요가 없다. - GOF(Gang Of Four)의 디자인 패턴 GOF 디자인 패턴은 위와 같이 23개가 있다. 이 포스트에서는 자주 쓰이는 일부의 패턴들만을 살펴 보겠다. 1. 생성(Creational) 패턴 1) 싱글턴 패턴 어떤 클래스가 유일하게 1개만 존재해야할 때 사용한다. 스프링에서 Bean을 만들 때 기본설정이 싱글톤이다. @Scope를 사용하여 변경할 수 있다. - 방법 class Singletone{ static private Sing.. 2021. 6. 5.
[DataBase] 7. ORM 1. ORM(Object Relational Mapping) 객체와 관계형 DB를 자동으로 매핑해주는 것으로 객체와 관계(RDB)를 매핑해 주는 것을 말한다. 객체지향은 클래스를 관계형 DB는 테이블을 사용한다. 객체와 관계형 DB의 불일치가 존재하는데 이 때 ORM을 통해 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. 즉, ORM을 사용하면 SQL문을 작성할 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게된다. 1) 장점 객체지향적인 코드 ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있어, 개발자가 객체 모델만 이용하여 프로그래밍 하는 데 집중 할 수 있다. SQL문을 사용하며 같이 필요한 선언문, 할당, 종료 등 부수적 코드.. 2021. 6. 4.
[Web] 2. REST/REST API/RESTful 1. REST REST란 REpresentational State Transfer의 약자이다. 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉, 자원의 표현에 의한 상태전달. 월드 와이드 웹(WWW)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식 1) REST 구성 자원(Resource) - URI 행위(Verb) - HTTP Method; 표현(Representation) 2) REST API의 특징 Uniform Interface URI로 지정한 리소스에 대한 조작이 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일 HTTP 표준 프로토콜에 따르는 모든 플랫폼(모바일, PC..)에서 사용가능함(특정언어에 종속X) .. 2021. 6. 4.
[Web] 1. 웹서버와 WAS(Web Application Server) 1. 결론 결론부터 말하면 Web Server는 정적인 페이지, Web Application Server는 동적인 페이지를 제공하는 서버이다. 이제 각 서버를 자세히 알아보도록 하자. 2. 웹서버(Web Server) 클라이언트로 부터 HTTP 요청을 받아 정적인 컨텐츠(html파일, 이미지 파일, css, javaScript)등을 제공하는 서버이다. 1) 기능 정적인 컨텐츠 제공 WAS를 거치지 않고 서비스를 제공한다. 동적인 컨텐츠 제공을 위한 요청 전달 클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달한다. 2) CGI(Common Gateway Interface)? 웹서버에서 프로그램을 동작시키기 위한 방법을 정의한 프로그램(또는 스크립트)로 PHP, Perl, Py.. 2021. 6. 4.
[DataBase] 6. 조인(JOIN) 1. 조인 JOIN이란 RDB에서 일반적을 많이 사용하며, 정규화를 통해 분리된 데이터 베이스에서 원하는 결과를 도출하기 위해 여러 테이블을 조합하는 것을 JOIN이라고 한다. JOIN을 통해 관련된 컬럼을 기준으로 행을 합쳐주는 연산을 할 수 있다. 2. 조인의 종류 1) INNER JOIN INNER JOIN은 가장 많이 사용되는 조인으로 2개의 테이블을 합쳐 새로운을 만들고 이중 A의 기준값과 B의 기준값( 예를들어 A의 PK와 B의 FK)이 일치하는 것에 대해 결과를 도출하는 것이다. 2) OUTER JOIN 외부조인은 크게 3가지로 나눌 수 있다. [1] LEFT OUTER ( A에 따라 B의 컬럼을 추가해 놓은 것 ) A테이블의 모든 데이터에 대해 B테이블과 매칭이 되는 레코드를 포함하는 조인.. 2021. 6. 3.