본문 바로가기

전체 글252

[UML] 프로필 다이어그램(Profile Diagram) - UML 요소, 커넥터 및 구성 요소를 확장하는 패키지에서 만든 것 - 도메인과 플랫폼의 관계를 정의할 수 있는 다이어그램 - 스테레오타입을 스테레오타입이 있는 클래스로 표시하고 프로필을 스테레오타입이 있는 패키지로 표시한다. - 스테레오타입을 생성하고 리소스 중심 인터페이스를 통해 구성 또는 일반화와 연관시킬 수 있음 - 스테레오타입의 태그 값을 정의하고 시각화도 할 수 있음 2023. 10. 13.
[프로그래머스][C++] 하노이의 탑 #include #include using namespace std; vector hanoi(int curNum, int n, vector pred) { if(curNum == n) return pred; curNum++; vector curVec = pred; // 1. 이전 원판들을 2번으로 옮김(2와 3을 바꿈) for(int i = 0; i < pred.size(); i++) { if(pred[i][0] == 2) { pred[i][0] = 3; } else if(pred[i][0] == 3) { pred[i][0] = 2; } if(pred[i][1] == 2) { pred[i][1] = 3; } else if(pred[i][1] == 3) { pred[i][1] = 2; } } // 2. k번.. 2023. 10. 13.
[프로그래머스][C++] 접미사인지 확인하기 #include #include using namespace std; int solution(string my_string, string is_suffix) { int answer = 1; for(int i = 0; i < is_suffix.size() ; i++) { if(my_string[my_string.size() - 1 - i] != is_suffix[is_suffix.size() - 1 - i]) return 0; } return answer; } 1. 0부터 is_suffix의 크기만큼 반복을 진행 2. 문자열 my_string와 is_suffix의 마지막원소부터 하나씩 앞으로 나가면서 비교를 진행 3. 비교하는 중에 하나라도 틀리다면 0을 리턴 4. 반복문을 빠져나왔다면 is_suffix의.. 2023. 10. 13.
[UML] 패키지 다이어그램(Package Diagram) - 어떤 구성요소라도 더 높은 수준의 단위로 묶을 수 있도록 해주는 구조 - 클래스와 같은 여러 모델 요소들을 그룹화하여 표현하기 위한 수단 - 각 패키지는 네임스페이스를 나타냄 - 모든 클래스는 자신이 속한 패키지 내에서 유일해야 함 - 규모가 큰 시스템에서는 패키지 다이어그램을 보아야 해당 시스템의 구조를 이해하고 제어할 수 있음 1) 패키지 - 여러 클래스들로 구성된 묶음 2) 의존 관계 - 하나의 패키지가 다른 패키지를 사용하는 관계 3) - 어떤 패키지가 너무 많은 곳에 쓰여서 의존을 표시하면 다이그램이 보기 힘들어질 때 키워드를 붙여 사용 - 패키지를 바라보는 시각에 따라 아래와 같이 여러가지 방법으로 표현될 수 있다. 2023. 10. 12.
[UML] 상호 작용 개요 다이어그램(Interaction Overview Diagram) - 시스템 구성 요소들 사이의 상호 작용을 표현하는 다이어그램 중 하나 - 객체들 간에 주고받는 메시지를 통해 상호 작용을 명세 - 여러 조건 분기를 적용하기에 적절함 - 활동 순서를 시각화한다는 것에서 활동 다이어그램과 유사 - 각 개별 활동인 중첩된 상호 작용 다이어그램을 포함할 수 있는 프레임으로 표시됨 - 활동 다이어그램과 같은 표기(초기,최종,결정,병합,분기,조인)를 사용하고 추가로 '상호 작용 발생', '상호 작용 요소'를 사용함 - if-then-else 경로를 단일 시퀀스 다이어그램으로 설명해야하는 복잡한 시나리오 분석에 유용함 2023. 10. 12.
[UML] 복합 구조 다이어그램(Composite Structure Diagram) - 클래스 내부 부분들을 나타내기 위해 사용 - 복합 구조의 클래스와 컴포넌트 내부 구조를 표현한다. - 클래스를 계층적인 내부 구조로 분해하여 복잡한 객체를 여러 개의 부분으로 나눔 1) 부분(Part) - 클래스 내부의 요소들을 나타냄 - "이름:클래스"의 형태로 나타내는데 둘 다 선택사항이다.(생략가능함) - 대괄호 속에 '[1]' 이런식으로 표시하여 다중성을 나타낸다. 2) 연결자(Connector) - 부분들 사이에 선으로 이어진 부분을 말한다. 3) 포트(Port) - 외부와 내부가 연결되는 지점 - 작은 네모로 표시 4) 대리 연결자(Delegation connector) - 포트와 부분 사이를 연결 - 화살표로 표시 - 같은 모델인데 왼쪽은 클래스, 오른쪽은 복합 구조 다이어그램을 나타냄 2023. 10. 12.
[프로그래머스][C++] 공배수 #include #include using namespace std; int solution(int number, int n, int m) { int answer = 0; if(number % n == 0 && number % m == 0) return 1; return answer; } 1. %연산을 이용해 나머지가 0인 경우를 판별하여 배수인지를 확인한다. 2. number를 n으로 나눴을 때의 나머지가 0이면서 m으로 나눴을 때도 나머지가 0이라면 1을 리턴한다. 3. 그 외의 경우에는 0을 리턴한다. 잠깨기 용으로 쉽게 풀었다. 2023. 10. 12.
[UML] 상태 머신 다이어그램(State Machine Diagram) - 객체의 행동 다이어그램 중 하나 - 객체는 특정 상태를 지니며 이 상태는 이벤트와 같은 액션에 의해서 변경되는데, 이러한 객체의 상태와 상태의 변화를 도식화 한 다이어그램이 상태 머신 다이어그램이다. - 상태 머신을 이용해 각 객체의 행동을 모델링한다. 1) 시작 마크(First State) - 프로세스에서 처음 상태를 나타냄 - 해당 마크와 이어진 상태가 처음 상태임 2) 상태(State) - 프로세스의 상태를 나타냄 - 둥근 모서리의 네모박스 3) 이벤트(Event)와 상태 변경/전이(Transition) - 이벤트는 상태 변경을 일으키는 무언가를 뜻한다. - 이벤트를 통해 외부에 의한 액션이 있을 수 있고, 아니면 시간의 경과에 따른 결과가 될 수도 있다. - 기존 상태에서 새로운 상태로 변화하.. 2023. 10. 10.
[UML] 배치 다이어그램(Deployment Diagram) - 시스템의 물리적인 구조를 보여주며, 어떤 소프트웨어가 어떤 하드웨어에서 동작하고 있는지를 보여준다. - 무엇이 어디에 배치되는지를 보여준다. - 시스템 설계 단계의 마지막에 작성한다. 1) 노드(node) - 소프트웨어를 실행할 수 있는 어떤 것 - 장치(device)와 하드웨어 두 가지의 형태로 존재 2) 실행 환경(execution environment) - 스스로 실행하거나 다른 소프트웨어를 포함하는 소프트웨어 - 운영체제, 컨테이너 프로세스 등이 해당한다. 3) 아티팩트(artifact) - 노드에 포함되며, 소프트웨어의 물리적인 모습을 뜻한다. - 클래스 상자로 보여주거나 이름을 나열하여 표현하는데 문서 아이콘 상자나 키워드를 붙여 표시한다. - .exe, .bin,DLL, JAR, 어셈블리.. 2023. 10. 10.
[자기계발][글쓰기][책] 타이탄의 도구들 '타이탄의 도구들'이라는 책을 읽었다. 자청님의 '역행자'에서 추천해준 책이어서 읽게되었는데 이 책의 내용을 요약하자면 한 분야에 상위 1%가 되는 것보다 여러분야에서 조금의 노력으로 각각 상위 25% 이상씩 달성하고 그것들이 모인다면 큰 노력과 재능이 필요한 상위 1%보다 다소 적은 노력과 재능으로 상위 1%를 뛰어넘을 수 있다는 것이었다. 이 책의 저자는 자신이 기록한 수백 권의 성공 노트를 바탕으로 자신이 필요한 것이 있을 때마다 그 때 기록한 노트를 꺼내 그 당시의 지식을 가져다 쓰는 방법을 사용한다. 또한 각 분야의 최정상들을 타이탄이라 칭하는데 저자가 직접 그들을 만나 얻은 지식을 글로 남겼고, 이 책에서 그 지식들을 설명한다는 의미에서 '타이탄의 도구들' 이라는 타이틀이 나왔다. 지금부터 이.. 2023. 10. 9.
[UML] 컴포넌트 다이어그램(Component Diagram) - 각각의 컴포넌트들이 어떻게 서로 연결되어 더 큰 컴포넌트나 소프트웨어 시스템을 구성하는지를 보여줌 - 시스템을 구성하는 소프트웨어의 조각, 임베디드 컨트롤러 등 그들의 조직과 종속성을 보여준다. - 클래스 다이어그램보다 높은 수준의 추상화를 가진다. - 일반적으로 컴포넌트는 하나 이상의 클래스에 의해 구현된다. - 시스템의 많은 부분을 포함할 수 있도록 구축 블록을 구축한다. 1) 컴포넌트 - 논리적 요소들을 물리적으로 패키지화한 것 - 행동의 제공과 필요한 인터페이스에 의해 정의되는 시스템의 모듈 부분을 의미한다. - 일반적으로 탭이 달린 직사각형의 형태로 표현한다. - 내부에 컴포넌트의 이름을 포함하고, 컴포넌트가 패키지에 포함되어 있다면 이름 앞에 패키지의 이름을 붙여서 나타낼 수 있다. 2) .. 2023. 10. 6.
[UML] 유스케이스 다이어그램(Use Case Diagram) - 시스템과 사용자의 상호작용을 다이어그램으로 표현한 것이다. - 사용자의 관점에서 시스템의 서비스, 기능 및 그와 관련한 외부와의 관계를 보여준다. - 프로젝트에 대한 요구사항을 정의하고 세부기능을 분석하여 개발 범위를 정할 때 작성한다. 1) 시스템(System) - 만들고자 하는 프로그램을 나타냄 - 유스케이스들을 둘러싼 사각형 틀로 시스템 명칭을 안쪽 상단에 작성한다. 2) 액터(Actor) - 시스템의 외부에 있고 시스템과 상호작용을 하는 사람(시스템의 기능을 사용하는 사람), 시스템(시스템에 정보를 제공하는 또 다른 시스템)을 말한다. - 원과 선을 조합하여 사람모양으로 표현 - 액터명은 위나 아래에 표시하여 액터의 역할을 작성 3) 유스케이스(Usecase) - 사용자 입장에서 바라본 시스템.. 2023. 10. 6.