분류 전체보기
Command Pattern
커맨드 패턴(Command pattern)을 이용하면, 요구사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러가지 다른 요구사항을 집어넣을 수 도 있습니다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원이 가능합니다. 커맨드 객체는 일련의 행동을 특정 리시버하고 연결시킴으로써 요구 사항을 캡슐화한 것이라는 점을 이미 배웠습니다. 이렇게 하기 위해서 행동과 리시버를 한 객체에 집어넣고, execute()라는 메소드 하나만 외부에 공개하는 방법을 씁니다. 이 메소드 호출에 의해서 리시버에서 일련의 작업이 처리됩니다. 외부에서 볼 때는 어떤 객체가 리시버 역할을 하는지, 그 리시버에서 실제로 어떤 일을 하는지 알 수 없습니다. 그냥 execute() 메소드를 호출하..
프로그래머스 - 방금그곡 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 1. #이 붙은 경우를 사용하지 않는 다른 문자로 치환 2. 재생 시간을 구하고 재생 시간 만큼의 재생된 음악 문자열을 만듬 3. 포함되면서 재생 시간이 긴 경우 answer 초기화 ps 만족하는 경우가 없으면 (None)을 리턴해줘야함. // 프로그래머스 방금그곡 문제 class Solution { public String solution(String m, St..
프로그래머스 - 비밀지도 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 두 수를 비트 연산자 | 를 통해서 합치고 2진법으로 변경하면서 n보다 짧으면 0을 앞에 추가해준 뒤 replace를 통해서 1은 #으로 0은 공백으로 변경해주어서 해결하였습니다. // 프로그래머스 비밀지도 문제 class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answ..
프로그래머스 - 동굴 탐험 문제 (자바)
graph을 기준으로 bfs를 진행하면 되는데 문제를 풀때 중요한 개념으로 세이브를 생각해내야한다. 게임을 하다가 중간에 끄기전에 세이브 하듯 큐를 통해서 노드를 진행하고 진행하다가 해당 노드보다 먼저 진행되어야 하는 노드가 있는 경우이면서 먼저 진행되어야하는 노드가 아직 진행 되지않은 경우 세이브 한 뒤 큐를 진행한다. - save[이전에 진행되어야 하는 노드] = 현재 노드 // 먼저 방문해야하는 곳을 방문 하지 않은 경우 // 해당 저장한 뒤 먼저 방문해야하는 곳을 방문했을 때 다시 처리할 수 이도록 함 if (!visited[before[now]]) { save[before[now]] = now; continue; } 그리고 만약 현재 진행하고 있는 노드가 다른 노드의 먼저 진행되어야하는 노드인 ..
Strategy Pattern
실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. 이점 컨텍스트 코드의 변경 없이 새로운 전략을 추가할 수 있다는 점입니다. 새로운 정책이 추가될 때 Strategy 인터페이스를 상속받아서 class를 구현하면 됩니다. 기존의 코드를 변경할 필요가 없죠. public interface Strategy { public int doOperation(int num1, int num2); } public class OperationAdd implements Strategy{ @Override public int doOperation(int num1, int num2)..
프로그래머스 - 호텔 방 배정 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/64063 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr map의 경우 로 room_number를 순회하면서 map값을 추가 및 수정하여서 값을 구합니다. 처음 배정 되는 경우 희망하는 호실에 배정해주고 바로 다음 해당 호실을 희망하는 경우 +1에 배정된다는 것을 고려해보시면 이해가 되실겁니다. import java.util.HashMap; import java.util.Map; // 프로그래머스 호텔 방 배정 문제 class Solution { static Map map = new HashMap(); public long[] solution(long k, long[] room_number) { long[] ..
프로그래머스 - 불량 사용자 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr dfs를 통해서 가능한 모든 경우(모든 순서, 모든 유저)를 구하고 가능한 벤 목록인지 체크합니다. 이후 ArrayList를 set으로 바꾸면서 저장하는데 이유는 ArrayList는 유효한 순서를 가지기 때문에 동일한 값들을 가지더라도 순서가 다르면 다르게 판단합니다. 때문에 resultSet에 ArrayList를 그대로 넣으면 순서만 다른 경우 다르다고 판단하게 됩니다. 이..
프로그래머스 - 경주로 건설 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 일반적인 경로 찾는 bfs 문제 두가지 정도 고려사항이 추가됩니다. 첫번째로 방문 처리가 없이 cos..