전체 글 10

[js/react] 공유하기 기능, 어떤 기술을 써야할까? 1편 - web share api

프로젝트 진행 중 공유하기 기능이 필요했다. 필요 기능: url 링크 복사 & 카카오톡 공유 & 트위터 공유 기술적으로 구현할 수 있는 방법은 크게 두가지이다. Web Share API 모달창으로 자체 구현 1. web share api mdn 공식문서 보기 OS에 내장되어 있는 공유 매커니즘을 사용해서 텍스트, 링크, 파일 등을 공유할 수 있게 해주는 API이다. 주의할 점은 이 API는 HTTPS에서만 작동하며, HTTP에서는 작동하지 않는다. 아이폰에서의 작동 모습 Web share api는 딱 두가지 메서드가 있다! 데이터가 공유 가능한지를 알려주는 것과, 실제로 공유를 하는 것 이렇게 두가지이다. 1-1. navigator.canShare() mdn 공식문서 보기 첫번째 메서드 canshare이..

JavaScript 2023.05.31

[CS스터디] 디자인 패턴 - 팩토리 패턴 (factory pattern)

팩토리 패턴 factory 팩토리 패턴은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴입니다. 상위클래스, 하위클래스가 분리되어 느슨한 결합을 가지며 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 더 많은 유연성을 갖게 된다. 객체 생성 로직이 따로 떼어져 있기 때문에 코드를 리팩터링하더라도 한 곳만 고칠 수 잇게 되니 유지 보수성이 증가. 상위 클래스 : 레시피 같은 거!!! 라떼 레시피, 아메리카노 레시피,,, 하위 클래스 : 레시피 토대로 생산하는 공장 같은 거!! 자바스크립트 const num = new Object..

[CS스터디] 디자인 패턴 - 싱글톤 패턴 (singleton pattern)

내용출처: 면접을 위한 CS 전공지식 노트디자인 패턴, 운영체제, 데이터베이스, 자료 구조, 네트워크, 개발자 면접 저자 주홍철 출판 길벗 발행 2022.04.28. 디자인 패턴이란? 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어놓은 것. 1.1.1 싱글톤 패턴 - singleton pattern 하나의 클래스에 단 하나의 인스턴스만 가지는 패턴. 하나의 인스턴스를 만들어놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점, 의존성이 높아진다는 단점이 있다. 자바스크립트 자바스크립트는 리터럴 {} 또는 new Object로 객체를 생성하게 되면 다른 어떤 객체와도 같지 않기 ..

[파이썬/알고리즘] 스택을 활용한 가장 큰 수 문제

파이썬을 이용한 가장 큰 수 구하기 문제 문제) 주어진 숫자의 자릿수에서 m개의 수를 제거해서 가장 큰 수를 만드는 프로그램을 작성하라. 입력 10진수 n과 제거해야할 자릿수의 개수 m이 주어진다. 풀이 n, m = map(int, input().split()) n = list(map(int, str(n))) #숫자n을 스트링으로 바꿔야 하나씩 접근 가능. stack=[] for x in n: while stack and m>0 and stack[-1] 앞에 2를 제거 6 -> 앞에 2, 5 제거 3개밖에 제거 못했기 때문에, 뒤에서 2개를 더 제거한다.(내림차순이 되어 있기 때문에.) stack[:-2] 참고) https://study3.tistory.com/6 [자료구조] 스택, 큐 stack(스택)..

[파이썬/알고리즘]이진트리 - 전위순회 중위순회 후위순회

DFS(Depth First Search) : 깊이우선탐색 깊이우선탐색이란, 가장 깊은 레벨까지 우선적으로 탐색하는 것! https://ko.wikipedia.org/wiki/깊이_우선_탐색 깊이 우선 탐색 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 깊이 우선 탐색의 애니메이션 예시 깊이 우선 탐색( - 優先探索, 영어: depth-first search, DFS)은 맹목적 탐색방법의 하나로 탐색트리의 최근에 첨가된 노드를 선택 ko.wikipedia.org 깊이우선탐색은 아래 세가지 종류가 있다. 전위순회: a → b → c 중위순회: b → a → c 후위순회: b → c → a 이진트리 다음과 같은 이진트리가 있다고 할 때, 전위순회, 중위순회, 우휘순회는 어떻게 출력값이..

Python/문법 2022.12.08

[파이썬/알고리즘] 재귀함수를 이용한 이진수 출력

파이썬을 이용한 이진수 출력 문제 문제) 10진수가 입력되면 2진수로 변환해 출력하는 프로그램을 작성하라. 입력 첫 줄에 10진수 n이 주어진다. 풀이 n=int(input()) def DFS(x): if x==0: return else: DFS(x//2) print(x%2, end='') DFS(n) DFS(깊이 우선 탐색) 우선, 십진수를 이진수로 바꾸는 방법을 알아야한다. (간단히 설명하자면, 십진수를 2로 나누어 나온 나머지를 역순으로 나열하면 된다.) 예를 들어 n=11 일 때, 작동하는 과정은 아래와 같다. DFS(11) 호출, 함수의 호출 정보를 스택에 기록, print(11%2, end='')는 시행되지 못하고 DFS(11//2) 호출로 넘어감 DFS(5) 호출, 함수의 호출 정보를 스택에..

[파이썬] 전역변수와 지역변수, 의미와 사용법

전역변수와 지역변수란? 지역 변수(local variable) - 함수 안에서 만들어진 변수 전역 변수(global variable) - 함수 밖에서 만들어진 변수 이름에서 알 수 있듯 지역변수는 Local - 특정 영역에서만 사용할 수 있는 변수이고, 전역변수는 global - 모든 곳에서 사용할 수 있는 변수입니다. 지역변수(local) def F(x): a=10 #지역변수 print(a) 위에서 a는 함수 안에서만 사용되는 지역변수입니다. F라는 함수는 print(a)를 시행하는데, 함수 안에서 선언된 a=10을 출력하는 것을 볼 수있습니다. 그러나 a는 함수 안에서만 유효하기 때문에 a를 함수에 대입하거나, a 자체를 프린트하려고 하면, 오류가 나는 것을 볼 수 있습니다. a가 선언되지 않았다는 ..

카테고리 없음 2022.11.08

[Python] 재귀함수의 개념과 종료조건

재귀함수란? 재귀함수란 자기 자신을 호출하는 함수이다. 즉, 함수 안에 자신의 함수를 가지고 있는 것이다. 예시 def A(x): print(x) A(x-1) 위 함수를 보면 A라는 함수 안에 A 함수를 다시 가지고 있는 것을 볼 수 있다. 이는 반복문의 효과를 가지게 된다! 예를 들자면, 위 함수에서 A(5)는 print(5) ➡️ A(4) ➡️ print(4) ➡️ A(3) ➡️ print(3) 이 과정을 무한 반복하게 한다! >>>A(5) 5 4 3 2 1 0 -1 -2 #무한출력주의!!! 재귀함수 종료조건 따라서 무한출력을 방지하기 위해서는 종료 조건을 넣어줘야한다. (참고로 종료 조건을 넣는 방법은 아래 2가지.) #if문 def A(x): if x>0: print(x) A(x-1) #if, r..

Python/문법 2022.10.26

[알고리즘] 회문 문자열 파이썬, python 회문 문자열 풀이

파이썬 회문 문자열 풀이 (python algorithm) 문제) 각 문자열이 회문 문자열(대칭)일 경우 True, 그렇지 않을 경우 False를 출력하는 프로그램. 회문(palindrome)? 앞에서부터 읽으나 뒤에서부터 읽으나 동일한 단어나 구 EX) mom, madam, level, dad, wow, noon 문자열 인덱싱 (string indexing) a ='level' 인덱스를 나타내는 방법은 아래처럼 두가지가 있다. l e v e l index 0 1 2 3 4 index -5 -4 -3 -2 -1 이 경우, 문자열이 대칭인지 확인하기 위해서는 a[0]==a[-1] and a[1]==a[-2] 를 만족해야 한다. i=0 일 때 -i-1=-1 i=1 일 때 -i-1=-2 가 된다. 파이썬 풀이..