Tech & Programming 46

땅따먹기(동적계획법, 문제 출처 : 프로그래머스)

[문제] 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경우, 1행의 네번째 칸 (..

팩토리 패턴(Factory Pattern) 이란?

이번 시간에는 팩토리 패턴(Factory Pattern)에 대해서 알아보도록 하겠습니다. 원칙 : 바뀔 수 있는 부분을 찾아내서 바뀌지 않는 부분하고 분리시켜야 한다. new를 사용하는 것은 구상클래스의 인스턴스를 만드는 것입니다. 구상클래스를 바탕으로 코딩을 하면 나중에 코드를 수정해야할 가능성이 높아지고, 유연성이 떨어지게 됩니다. 그 이유는 바로 변화에 약하기 때문입니다. 인터페이스에 맞춰서 코딩을 하면 시스템에서 일어날 수 있는 여러가지 변화를 이겨낼 수 있습니다. 이렇게 구상클래스의 인스턴스를 만드는 부분을 찾아서 분리/캡슐화 하기 위해서 바로 팩토리 패턴을 씁니다.팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만..

프록시 패턴(proxy pattern) 이란?

이번에는 프록시 패턴(proxy pattern)에 대해서 알아보도록 하겠습니다. 프록시 패턴은 어떤 객체에 대한 접근을 제어하는 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴입니다. 주로 프록시 패턴은 RealSubject 가 원격 시스템에서 돌아가거나, 그 객체의 생성 비용이 많이 들어 실제 사용 시점에 객체를 생성하거나, 실제 객체에 접근을 제한 및 제어를 해야 할 때 등 의 경우에 사용 됩니다. 프록시 패턴의 UML은 아래와 같습니다. Proxy 에는 RealSubject에 대한 레퍼런스가 들어있습니다. 그리고, Proxy 와 RealSubject 는 똑같은 인터페이스(Subejct)를 구현하기 때문에 RealSubejct 객체가 들어갈 자리면 어디든지 Proxy 를 대신 쓸 수 있습니다..

스테이트 패턴(State Pattern) 이란?

이번 시간에는 스테이트 패턴(State Patter)에 대해서 알아보겠습니다. 사탕 뽑기 기계 프로그램을 구현한다고 가정하면 사탕뽑기 기계는 '동전없음', '동전있음', '상품배출', '상품품절' 상태를 가질 것입니다.그리고, 사탕뽑기의 각 상태는 아래와 같은 행위를 통해서 다른 상태로 변이하게 됩니다. 이 행위들과 상태를 코드로 구현하면 아래와 같이 구현할 수 있을껍니다. public class GumBallMachine { final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; final static int HAS_QUARTER = 2; final static int SOLD = 3; private int numberOfGumBall = 0;..

이터레이터 패턴 (Iterator Pattern) 이란?

2019년은 리펙토링 및 소스코드의 품질, 설계 공부에 초점을 맞춰서 책을 읽고, 공부를 하고 있습니다.그 중 Head First Design Patterns 책을 보고 패턴에 대해 공부한 내용들을 조금씩 정리해서 시리즈로 꾸준히 올려보도록 하겠습니다. 금일은 이터레이터(iterator) 패턴입니다. 이터레이터(iterator) 패턴은 컬렉션 구현방법을 노출 시키지 않으면서도 그 집합체 안에 들어 있는 모든 항목에 접근할 수 있게 해주는 방법을 제공해 줍니다. 이터레이터(iterator) 패턴을 사용하면 객체안의 항목 또는 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식을 통일할 수 있습니다. 이렇게 접근 방식을 통일하게 되면 어떤 종류의 객체에 대해서도 사용할 수 있는 다형적인 코드를 만들 수 있..

2018 GDG DevFest in 서울 참석 후기

어제(18.11.10) 세종대학교 광개토관 컨벤션홀에서 GDG DevFest 서울이 있었습니다.저는 GDG DevFest 행사 소식이 있자마자 서울 나들이 겸 다녀와야 겠다는 생각으로 미리 블라인드 티켓을 구매해놨었습니다. 그래서, 어제 가을 나들이 겸 서울까지 겸사겸사 다녀왔습니다. QR코드로 체크인을 하고, 굿즈를 받았습니다.굿즈는 무릎담요 + DevFest 스티커 였고요. 사진을 찍었어야 했는데 정신없이 돌아본다고 사진을 깜빡했네요. 이번 시즌에는 요기요, 카카오페이, bank salad, cracker 채용 관련 부스가 있었습니다.명함 이벤트를 모두 진행했는데, 당첨이 하나도 안되서 아쉽더군요. 아무튼, 각 부스를 돌아다니며 이벤트도 참여하고, 스티커를 모으다 보니 어느 덧 Keynote 시작 시..

AlertDialog의 setSingleChoiceItems 리스트 아이템이 안보이는 경우 확인사항

몇 일전 토이프로젝트를 진행하다가 어이없는 실수를 저질렀습니다. 꼼꼼하게 공식개발문서를 읽지 않고, 예제소스코드도 대충보고 짜서 저질러진 일인데 똑같은 실수를 방지하기 위해서 이렇게 부끄러움을 무릅쓰고 블로깅을 합니다. 일단 문제의 소스코드 입니다. 간략하게 해당소스에 대해서 말씀드리면 구글 Geocoding API의 결과를 받아서 결과가 여러개일 경우 선택할 수 있게 single choice 리스트 형태로 AlertDialog를 띄우는 부분입니다. 한번 보시고 어디가 문제 인지 한번 찾아보시길 바랍니다. 혹시 AlertDialog에 대해서 선행 학습이 필요하신 분은 아래 공식문서 및 블로그의 글을 한번 읽어 보시면 됩니다.구글 대화상자 공식문서 : https://developer.android.com/..

Soundpool 재생이 안되는 경우 해결방법 (Soundpool.load 딜레이)

토이프로젝트로 마켓에 출시했던 '어린이 낱말카드' (2017/11/29 - [Toy Project] - 어린이 낱말카드) 에 낱말카드로 할 수 있는 게임기능을 넣어달라는 요청이 있어 최근에 개발을 했습니다. 낱말카드 중 하나의 텍스트를 보여주고, 4가지 낱말카드 이미지 중 텍스트에 해당하는 이미지를 찾는 게임입니다. 이 때 이미지를 터치하게 되면 효과음이 나도록 하기 위해서 SoundPool을 이용해서 구현하였습니다. 간단한 거니까 당연히 되겠지하며 테스트를 했는데, 효과음이 나지 않았습니다. 확인을 해보니 아래와 같은 문제가 있었습니다. 현상아래와 같은 코드로 SoundPool을 사용하였으나, 제대로 효과음이 나지 않음. 디버깅으로 breakpoint를 걸어 한줄씩 실행 시 효과음이 발생함. publi..

REST API 서버구축(2/ 2) - python, virtualenv, Django-rest-api 설치

지난 번 REST API 서버 구축 첫번째 글 작성에 이어 2번째 글을 작성합니다. (이전 글 참고 : 2018/04/06 - [Tech & Programming/서버 & 보안] - REST API 서버구축(1/ 2) - AWS EC2 인스턴스 생성) 인사말 안드로이드 앱(기분 좋은 인사)을 개발할 때 모든 DATA를 res(Local)에 넣기에는 매번 앱을 마켓에 업데이트 해야고, 용량이 커지는 불편함이 있어 REST API서버 구축의 필요성을 느꼈습니다. 그래서, 인터넷으로 REST API에 대해 조사를 했는데, 빠르고 간단하게 구축하기 위해서 사람들은 스피링 부트와 Django 가 많은 사람들이 이용하는 것 같았습니다.저는 안드로이드 앱개발이 주된 목적이었고, 주고 받는 데이터도 복잡하지 않았기 때..

Sybase 파워빌더 아카이브 사이트 공유 (MSDN과 유사)

파워빌더관련 정보는 인터넷에서 찾기가 어려운데요.그래서, 파워빌더로 개발하고 계신 분들을 위한 정보공유를 하나합니다. http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc37781_1150/html/psref/CCJCHGJH.htm 위 사이트는 Sybase 사의 아카이브 사이트 인데, 마이크로 소프트사의 MSDN과 유사한 페이지라고 할 수 있네요.영어로 되어 있긴 하지만 파워빌더에서 쓰이는 API 의 파라메터, 리턴값, 사용방법 등이 잘 설명되어 있습니다. 파워빌더 프로그래밍하는데 많은 도움이 되었으면 좋겠습니다.