분류 전체보기

    LeetCode(448)::Find All Numbers Disappeared in an Array

    문제 Find All Numbers Disappeared in an Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제파악 Given an array nums of n integers where nums[i] is in the range [1, n], return an array of all the integers in the range [1, n] that do not appear in nums. n == nums.length 1

    Binary Search Algorithm(이진 탐색 알고리즘)

    Binary Search Algorithm 여러가지 탐색 알고리즘들을 보면 여러가지 알고리즘을 찾을 수 있다. 가장 기본적으로는 선형 탐색 방식으로 앞에서 부터 하나씩 비교하며 찾는 방법이다. 말그대로 탐색을 한 쪽 끝에서 다른 끝까지 탐색하기 때문에 탐색 대상이 뒤쪽에 위치해있으면서, 탐색 대상이 많은 경우 매우 비효율적일 수 있다. 하지만, 만약 탐색하고자 하는 데이터가 정렬이 되어 있는 경우 좀더 효율 적인 방법을 이용할 수 있는데 이것이 바로 이진 탐색 알고리즘이다. 정의(Definition) 정렬된 탐색대상에서 특정 대상을 찾고자 할때 사용 할 수 있는 탐색 알고리즘 정렬된 알고리즘으로 부터 탐색 중간값과 탐색대상을 비교후 탐색 범위를 절반으로 줄여가며 찾는 알고리즘 이렇게 정렬된 알고리즘으로 ..

    LeetCode(189)::Rotate Array

    문제 Rotate Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제파악 Given an array, rotate the array to the right by k steps, where k is non-negative. 배열의 값이 k스텝 마다 한칸씩 오른쪽으로 넘기면 될 거 같습니다. 문제풀이 해당 문제는 여러가지 풀이 기준이 존재하는데 인덱스 기준으로 생각할 수도 있으며, 시프트 방식으로 in-place로 문제를 해결할 수도 있다. 해결책 1..

    [macOS]특수문자 사용하기

    윈도우와 달리 맥에서는 특수문자를 입력하는 키가 따로 있다. 심지어 이모티콘도 함께 입력할 수 있는데 이 방법에 대해 알아보겠다 특수문자, 이모티콘 사용하기 우선 특수문자, 이모티콘을 사용하기 위해서는 단축키 혹은 메뉴에서 선택해서 사용할 수가 있다. 단축키 이용하기 > "command + controll + space"키를 동시에 누른다 > 특수문자 입력창이 뜨면 사용하고자 하는 특수문자 혹은 기호를 선택하면 된다. 메뉴 탭을 이용하기 > 상단 '편집 탭'의 '이모티콘 및 기호'를 선택한다. > 특수문자 입력창이 뜨면 사용하고자 하는 문자를 선택한다.

    LeetCode(43)::Multiply Strings

    문제 Multiply Strings - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제파악 Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string. → 즉, 2개의 문자열로 표현된 양수가 들었을때 두스의 곱을 문자열로 표현하라~!! 1 = 0; j--){ int int_nu..

    BaekJoon(2447)::별찍기-10

    문제 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제파악 재귀적인 패턴으로 별이 찍혀있음(N은 3의 거듭제곱) 크기 3의 패턴은 가운데 공백이있음. 해당 패턴이 재귀에 따라서 커지면서 반복됨. 문제의 기본이 되는 가장작은 사이즈는 우측그림에서 보다시피 초록색영역으로 출력이 된다. 다만 재귀의 형태를 좀더 자세히 보고자 N=9로 확장해보면 파랑색영역으로 보이는것을 알 수 있고 그보다 크 27일때는 빨강의 영역이다. 그리고 별찍기의 특성상 별이 그려지면 탈출을 시켜주고 해당영역이 ..

    GoF::싱글톤 패턴(Singleton Pattern)

    이 글은 '백기선의 코딩으로 학습하는 GoF의 디자인 패턴' 강좌를 듣고 해당 내용을 공부하며 정리한 글입니다. 싱글톤 패턴(Singleton Pattern) 인스턴스를 오직 한 개만 만들어서 제공하는 클래스가 필요한 경우에 사용하는 패턴 즉, 클래스가 최초 한번만 메로리를 할당받고 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴으로 생성자가 여러 차례 호출되더라도 실제 생성되는 인스턴스는 기존에 생성된 인스턴스이다. 정의(Definition) 소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱..

    Recursion Algorithm(재귀 알고리즘)

    Recursion Algorithm 처음 재귀를 접하게 되면 이해가 안될 것이다. 다만 위 그림을 보면 대충 재귀가 무엇인지 감이 잡힐 것이다. 재귀에 대해서 알아보면 임의의 함수가 자기자신을 호출하는 재귀 호출을 이용하는 알고리즘이다. 같은 행동을 반복적으로 행할때 사용하는 알고리즘인 것이다. 그렇다면 재귀알고리즘은 반복문과는 어떠한 차이가 있을까? 그리고 재귀를 이용함으로써 얻을수 있는 이점은 무엇이고 단점은 무엇인가를 알아보고자한다. 정의(Definition) 임의의 함수가 자기자신을 호출하는 것으로 그 함수를 재귀함수라하며 그 호출을 재귀호출이라한다. 이렇듯 재귀알고리즘은 스스로를 호출하는 함수를 이용한 풀이를 재귀 알고리즘이라고 말한다. 재귀알고리즘을 이용하기 위해 재귀함수를 만들때는 중요한 점..

    [커피일기]칼리타로 추출하기

    칼리타로 추출하기 집에서 처음 커피를 내려서 먹기 시작하면서 드리퍼를 고민했었다. 그렇게 처음 접한 드립퍼는 칼리타(Kalita)였다. 물론 대부분의 핸드드립은 비슷하지만, 칼리타라는 드립퍼의 특성을 좀 더 잘 알고 잘 내리고 싶어서 칼리타에 대해서 잘 알아보도록 하겠습니다. 칼리타의 등장 핸드드립은 17세기 유럽에서 시작해서 긴 시간 발전을 멜리타 벤츠로 부터 시작한 페이퍼 드립이 핸드드립의 토대가 되어 발전되었다. 2차 세계대전 당시 일본에는 많은 커피전문점이 들어왔는데 이당시에는 사이폰과 융드립을 이용한 추출방식을 사용하였다. 특히 융드립은 저도 좋아하는 방식인데 요즘 융드립으로 내려주는 곳이 없어서 조금 아쉽다. 하여튼 융드립으로 커피를 추출시 종이필터를 이용할때 걸러지던 커피기름이 커피에 녹아들..

    API Versioning

    Rest API 버전관리 Rest API의 설계가 변경되거나 구조가 변경될시 버전을 변경하여 관리를 해줘야한다. 이유는 당연히 기존에 사용하던 하위 버전의 Rest API를 호출하여 사용할 수 없게 될경우 클라이언트측의 코드가 변경되어야하기 때문이다. 즉, 기존 사용하던 Rest API를 계속해서 사용하게 해주기 위해 버전을 관리해주어야 한다. 언제 관리해야할까? 그러면 API의 버전을 언제 관리해야할까? 보통 api의 버전은 Major와 Minor로 구분하여 상황에 맞추어 버전을 관리하게 된다. Major Version 이전 버전과 호환의 문제가 깨지는 즉, 클라이언트측의 코드가 변경되어야하는 하는 상황으로 본다. API가 삭제되거나 API URL이 변경되는경우 API의 파라미터가 삭제되거나, 파라미터..

    [커피일기]핸드드립(Hand-Drip)이란?

    핸드드립이란? 핸드드립(Hand-Drip)이란 직접 손으로 커피를 내리는 방식이라고 해서 Hand-Drip이라는 명칭을 사용하고는 있지만 정식명칭은 'Filter Brewed Coffe'가 됩니다. 오늘날에 있어 핸드드립은 기본적인 드리퍼와 서버, 종이필터만 있으면 커피를 추출 할 수 있다. 물론 사실상 드립서버가 없더라도 커피를 추출할 수 있다. 핸드드립의 유래 드립커피의 유래 유럽에서 시작된 커피 추출방식으로 17세기 프랑스, 돈 마틴에 의해 드립포트가 시작되었다고한다. 일반 주전자 주둥이 끝에 필터같은 도구를 장착하여 주전자 안에 커피와 뜨거운 물을 넣고 우려 마시는 방법을 이용했다고 한다. 다만, 이경우는 차와 같이 우려낸 커피를 커피가루가 나오지 않도록 필터(헝겊)를 이용하여 드립포트를 만든 것..

    [커피일기]원두 이름 네이밍 규칙

    원두 이름 네이밍 규칙 여러 커피들을 접하다보면 자연스럽게 원두에 관심을 갖게 될것이다. 커피원두 또한 지역마다, 가공법 마다 맛이 달라지는데, 이러한 점이 와인 명칭과 매우 유사하다. 국가별...지역별 그리고 원료 등급 마지막으로 가공법에 따라 이름이 바뀌는데 와인 명칭과 매우 구성이 유사함을 알 수 있다. 물론 원두마다 약간시 차이는 있지만 아마도 커피의 이름을 통해 정보를 얻는 방법을 확실하게 안다면, 좀 더 내가 원하는 스타일의 다양한 커피맛을 경험할 수 있을 것 같아 원두의 이름의 명명 규칙을 알아보려고 한다. 원두 이름 구성요소 원두이름을 살펴보면 기본적인 원두에 대한 정보를 알 수 있다. 보통 생산 국명, 수출 항구명, 커피 등급, 커피의 생산지역 및 생상 농장명 등으로 구성되어있어 해당 정..