분류 전체보기

    [프로그래머스] 신고 결과 받기 [python]

    [프로그래머스] 신고 결과 받기 [python]

    문제 구현 문제였고, set과 map(dictionary)를 사용해서 문제를 풀었다. 먼저 이름들을 idx에 맞도록 dictionary에 매핑을 시켰고, 신고를 당한 사람을 key로 두고, value들을 신고한 사람을 set으로 둬서 문제를 해결하였다. 시간 복잡도는 report의 크기를 N으로 하면, O(N)일 거 같다 코드 def solution(id_list, report, k): answer = [0 for i in range(len(id_list))] mail = {} nameToIdx = {} for idx, idl in enumerate(id_list): nameToIdx[idl] = idx for re in report: userId, reportedId = re.split(" ") if ..

    [프로그래머스] 개인정보 수집 유효기간 [Python]

    [프로그래머스] 개인정보 수집 유효기간 [Python]

    문제 간단한 구현문제이다. python으로 class를 처음 써봐서 버벅거려서 시간이 좀 걸렸다,,, 시간복잡도는 O(n)이다 👨‍💻코드 def solution(today, terms, privacies): answer = [] tYear, tMon, tDay = today.split(".") tod = Date(tYear, tMon, tDay) dates = [] t = {} for term in terms: a, m = term.split(" ") t[a] = int(m) for privacy in privacies: date, a = privacy.split(" ") aYear, aMon, aDay = date.split(".") dates.append(Date(aYear, aMon, aDay).p..

    이터레이터 패턴이란❓

    이터레이터 패턴이란❓

    이터레이터 패턴 행동 패턴이란?🤔 어떤 처리의 책임을 어느 객체에 할당하는 것이 좋은지, 알고리즘은 어느 객체에 정의하는 것이 좋은지 다루는 패턴. 이터레이터 패턴이란?🤔 집합 객체를 순회하는 패턴 집합 객체의 "내부 구조"를 "노출시키지 않고", 순회하는 방법을 제공하는 패턴. 내부 구조를 들어내지 않고 클라이언트가 요소들을 순회할 수 있도록 한다. 집합 객체를 순회는 클라이언트 코드를 변경하지 않고 다양한 순회 방법을 제공할 수 있다. 집합 객체를 순회하는 다양한 방법을 지원하고 싶을 때 - 트리를 순회 방법.(ex. 중위 순회, 전위 순회, 후위 순회) - 객체의 특성에 따라 원하는 대로 Iterator를 구현하여, 순회 가능 Aggregate: 집합체를 의미하는 인터페이스. Iterator를 만들..

    브릿지 패턴이란❓

    브릿지 패턴이란❓

    구조 패턴이란❓ 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴. 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나, 객체들을 서로 묶어 새로운 기능을 제공하는 패턴 구조 패턴 특징✌️ 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 것처럼 사용할 수 있다. 여러 인터페이스를 “합성”하여 서로 다른 인터페이스들의 통일된 추상을 제공한다. 인터페이스나 구현을 복합하는 것이 아니라 객체를 "합성”하는 방법을 재공한다. 브릿지 패턴이란❓ 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴이다. 여기서 연결이라는 표현이 브릿지를 의미한다. 추상적인 것과 구체적인 것을 구분짓는 것에 집중을 해야된다. client : abstraction을 사용하는 코드 abstrac..

    OAuth login 구현 구조 변환 과정

    프로젝트에서 로그인 기능을 구현하는 파트를 맡게 되었다. 우리 프로젝트에서는 일반 로그인은 하지 않고, 다른 많은 사이트처럼 sns로그인만 지원하기로 했다. 그래서 나는 OAuth 2.0 프로토콜에서 Authorization Code Grant 방식으로 구현을 했다. Spring Security에 대한 이해가 부족했어서, Spring Security없이 구현을 했다. sns 로그인은 google, naver, kakao 등 여러 개가 추가 될 수 있기 때문에, 확장성을 고려하면서 구현을 해서, 여러 번에 리팩토링 과정이 있었다. 그 과정에 대해서 쓰려고 한다. 여기서, authorization code는 front-end에서 받아와서, 요청을 처리할 수 있도록 했다. V1 구조 login 처리를 담당하는..