분류 전체보기(361)
-
[Programmers] 키패드 누르기 - Java
https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 1단계 문제라서 쉽게 해결될 줄 알았는데 생각보다 애먹었다. 처음에는 키패드 숫자로 계산해서 거리를 찾으려고 했으나 나 실패하였고, 배열로 하려고 잠깐 생각했었지만 복잡해질 것 같았다. 그래서 Position이라는 객체를 만들어서 거리 계산을 해결했다...
2021.12.13 -
[Programmers] 숫자 문자열과 영단어 - Java
https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 이 문제는 replaceAll() 메서드만 알고 있으면 간단하게 풀리는 문제다. class Solution { private static String[] nums = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; public int solution(St..
2021.12.12 -
Interpreter Pattern
개요 인터프리터는 프로그래밍 언어를 처음 배울 때 아마 많이 접했을 것이다. C, Java(명백히 말하면 아니지만)와 같은 언어를 컴파일 언어라고 하고 파이썬, 자바스크립트 같은 언어를 인터프리터 언어라고 한다. 인터프리터 언어는 컴파일이 아니라 코드 한 줄 한 줄을 해석하고 실행하기 때문에 간편하고 빠른 결과를 확인할 수 있다. 인터프리터 패턴은 이와 같이 간단한 문법을 해석할 때 사용되는 패턴이다. 말로 설명하는 것보다 코드로 이해하는 것이 더 빠르므로 바로 예제로 들어가자. 예제 - 자동차 전진 프로그램 자동차를 전진시키는 프로그램을 만들고자 한다. 커맨드로 움직임을 구현할 것인데 명령어 구성은 다음과 같다. program: 프로그램을 시작하는 커맨드 repeat: 루프를 시작하는 커맨드 go: 현..
2021.12.12 -
Memento Pattern
개요 메멘토 패턴(Memento Pattern)은 객체를 이전의 상태로 복구시켜야 하는 경우에 사용되는 패턴이다. 복원, 작업 취소 등의 작업이 필요할 때 사용된다. 시나리오 한 주사위 게임이 있다. 이 게임은 주사위가 1이 나오면 100원을 얻고 2가 나오면 현재 보유한 돈이 절반이 된다. 특별한 숫자인 6이 나오면 과일을 받는다. 돈이 전부 떨어지면 게임이 종료된다. 여기서 우리는 부정행위(?)를 하려고 한다. 현재 돈이 이전보다 많아지면 현재 돈을 저장해놓는다. 그러다가 나중에 돈이 너무 적어지면 저장해놓은 돈으로 복구시킨다. Class Diagram 코드 import java.util.ArrayList; import java.util.List; public class Memento { privat..
2021.12.11 -
Flyweight Pattern
개요 Flyweight는 격투기에서 가장 가벼운 몸무게 범주에 속한다. 그렇다면 이 패턴 또한 무언가를 가볍게 처리한다고 미루어 짐작할 수 있다. Flyweight 패턴은 어떤 클래스의 인스턴스 한 개를 이용하여 가상 인스턴스를 제공하고 싶을 때 사용한다. 예를 들어 스타크래프트를 생각해보자. 마린(해병)은 움직이기, 총 쏘기, 스팀팩 등 모두 공통적인 기능을 사용한다. 이때 200명의 마린 인스턴스를 전부 생성한다고 어떨까? 분명 공통적인 부분은 전혀 변하지 않는다. 그러나 모든 인스턴스가 이를 각자 가지고 메모리에 올라가기 때문에 불필요한 메모리 낭비가 발생한다. 이 패턴을 다시 말하면 어떤 클래스의 공통적인 기능들을 하나의 인스턴스를 공유하도록 하여 메모리를 절약하는 패턴이다. 이제 예제 코드를 살..
2021.12.11 -
[Programmers] 신규 아이디 추천 - Java
https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 문제를 보자마자 정규식을 써서 풀어야 될 거라고 생각했다. 자바에서는 replaceAll()이라는 함수로 정규식을 이용해 문자열을 치환할 수 있다. 정규식을 알면 어렵지 않게 풀 수 있는 문제다. 정규식은 간략하게 정리하면 다음과 같다. 자바에서 정규식을 쓸 때 주의할 점은 정규식 기호를 문자로 매칭하려면 백슬래시(\)를 두 개 붙어줘야 한다. Group..
2021.12.11