본문 바로가기

전체 글

(125)
[CS BASIC] 소프트웨어 아키텍처 디자인 패턴(Software Architecture Design Pattern) 소프트웨어의 아키텍처(Architecture)란? 외부에서 인식할 수 있는 특성이 담긴 소프트웨어의 골격이 되는 기본 구조로 볼수 있다. 데이터 중심 아키텍처는 공유 데이터저장소를 통해 접근자 간의 통신이 이루어지므로 각 접근자의 수정과 확장이 용이하다. 이해 관계자들의 품질 요구사항을 반영하여 품질 속성을 결정한다. 소프트웨어 아키텍처 패턴의 장점 개발 시간의 단축 고품질 소프트웨어 안정적 개발 가능 개발 단계 관계자 간 의사소통이 간편함 시스템 구조 이해도가 높아 유지보수에 유리함 시스템 아키텍처의 종류 계층화 패턴 (Layered pattern) | OSI 참조 모델 등 모듈들로 응집된 계층 단위로 SW를 구성. 계층간에 사용 가능의 관계로 표현 n-티어 아키텍처 패턴이라고도 불림. 구조화된 프로그..
[회고] 소보로(SOBORO), 프로젝트 회고록 들어가기 전에.... 안녕하세요, 개발자 1-hee 입니다. 오늘은 처음으로 플레이스토어에 앱을 출시했던 첫 번째 안드로이드 앱 프로젝트 회고록을 작성해보려고 합니다. 아마추어 안드로이드 개발자가 앱 출시 하겠다며 도전했던 7주간의 이야기 지금 바로 시작해볼게요. 주제 선정 이번 프로젝트는 인공지능 기술을 사용한 서비스 개발에 도전해보았어요. 저희 팀은 구체적인 주제를 무엇으로 할까 고민하다가 STT와 TTS 기술을 사용해 청각 장애인분들을 위한 서비스 개발해보기로 결정했습니다. 이때, 서비스에 대한 홍보성으로 아래와 같이 소개 글도 작성해 보았습니다. Visualize Your Voice, 당신의 목소리를 보여드립니다. 🎵 소보로(SOBORO)는 모든 소리가 하나되는 세상을 지향합니다. 🌎 소보로(SO..
[회고] FLOS, 프로젝트 회고록 들어가기 전에.... 안녕하세요, 개발자 1-hee 입니다. 오늘은 올해 1월 부터 약 7주간 진행한 프로젝트 회고록을 작성해 보려고 합니다. 아마추어 개발자 교육생 6명이 모여서 서비스 하나를 만들어보기 위해 고군분투 했던 이야기 지금 바로 시작해볼게요. 주제 선정 이번 프로젝트는 우리가 일상 속에서 사용하는 SNS를 주제로 새로운 서비스를 만드는 도전을 해보았습니다. 물론, 실제 SNS 서비스를 제공하려면 Facebook, Instagram, Tiktok이라는 거대한 기업에 도전하는 격이었지만, 우리 팀은 우리의 창의성을 무기로 프로젝트에 도전을 하기로 결정했습니다. "남들에게 보여주기 위한 서비스가 아닌, 서로에게 공감하는 것에 중점을 둔 SNS를 만들어보자." 이 한마디가 이번 프로젝트에서 우리 ..
[알고리즘] 투 포인터와 부분합 투포인터란? "정렬된" 리스트 상에서 두 개의 포인터(= index 좌표) 를 사용하여 순차적으로 접근하면서 구간의 값이 목표 값과 같을 때까지 포인터를 조작하며 원하는 부분합과 구간을 구할 수 있는 알고리즘 기법입니다. 투 포인터는 주로 1차원 배열 상에서 부분합 등을 구할 때 주로 사용하게 되는데요. 이때 무조건 1차원 배열이라고 해서 투포인터를 사용할 수 있는 것은 아니며, 배열이 정리되어 있지 않다면 정렬된 상태로 만들어 주어야 합니다. 투포인터는 O(N)의 시간 복잡도를 가집니다. 알고리즘 설명 정렬된 값을 가지는 1차원 배열이 주어지고, K라는 값을 가지는 배열 속 숫자들의 부분합을 구한다고 가정해보겠습니다. 이 경우 투포인터를 사용하면 아래와 같이 포인터의 이동을 표현할 수 있는데요. 배열의..
[PGR] 2023 KAKAO BLIND RECRUITMENT - 표 병합 📌 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150366 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제설명 정사각형의 2차원 배열 속 좌표를 갖는 표의 셀의 병합과, 병합 해제, 값 변경 등의 구현을 해야하는 문제였습니다. 문제의 설명 중, 인접하지 않은 두 셀에 대해서도 병합이 가능하다는 설명이 있고, 두 점에 대하여 병합한다는 점에서 Union-Find 알고리즘 즉 서로소 집합 알고리즘이 적용될 수 있는 문제였습니다. 제약조건 1 ≤ commands의 길이 ≤ 1,000 c..
[PGR] 2019 카카오 개발자 겨울 인턴십 - 호텔 방 배정 📌 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/64063 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제설명 고객에게 호텔 방 번호를 배정할 때, 이에 최적화된 알고리즘을 통해 시간 복잡도를 개선해야 통과할 수 있는 문제였습니다. 이번 문제에서 '최대 방번호'를 찾기 위해 사용한 알고리즘은 서로소 집합, 즉 유니온 파인드 알고리즘을 사용했습니다. 소스 코드 자체는 코드량이 적어 간단한 편이나, 그 원리에 대해 설명해보도록 하겠습니다. 문제에서 주어지는 파라미터는 두 종류 입니다. ..
[회고] 하루 1분, 프로젝트 회고록 들어가기 전에.... 안녕하세요, 하루 1분 수학 본능의 개발자 1-hee 입니다. 하루 1분을 어떻게 개발했는지, 앞으로 어떻게 할 예정인지 스스로 기록하며 되돌아보는 시간을 갖고자 회고록을 작성하게 되었습니다. 양식은 어떻게 할까 고민하다가, 스스로 질문하고 답변하는 식으로 구성해보기로 했는데, 목차나 내용이 다소 산만하더라도 너른 이해를 바랍니다. 🌐 하루 1분 Link https://play.google.com/store/apps/details?id=co.kr.onedaymath Q. 하루 1분을 간단하게 소개한다면? '하루에 1분만 사칙연산 연습을 해서 수학적 암산 능력을 트레이닝해 보자' 이 한 줄의 아이디어로부터 시작한 토이 프로젝트입니다. 제삼자에게 하루 1분은 여러 명의 개발자가 참여하는..
[CS BASIC] 소프트웨어 아키텍처 (Software Architecture) 소프트웨어 아키텍처란? 요구사항을 기반으로 개발 대상 소프트웨어의 기본 틀(뼈대)를 만드는 것이다. 다수의 이해관계자가 참여하는 복잡한 개발에서 상호이해, 타협, 의사소통을 체계적으로 접근하기 위한 것이다. 전체 시스템의 전반적인 구조를 체계적으로 설계 하는 것이다. 소프트웨어를 구성하는 컴포넌트들의 상호작용 및 관계, 각각의 특성을 기반으로 컴포넌트들이 상호 유기적으로 결합하는 소프트웨어의 여러 가지 원칙들의 집합이다. 설계 및 구현을 위한 구조적/비구조적인 틀(Frame)을 제공한다. 소프트웨어 아키텍처 시스템의 품질 속성 ① 성능, ② 사용 운용성, ③ 보안성, ④ 시험 용이성, ⑤ 가용성, ⑥ 변경 용이성, ⑦ 사용성 소프트웨어 아키텍처 특징 ① 간략성 : 이해하고 추론할 수 있을 정도 간결해야 ..