전체 글 (45) 썸네일형 리스트형 탑싯_1_소프트웨어 개발_3_자료구조 종류 1. 데이터의 관계에 따라 선형 구조: 자료가 일렬로 연결되어 있는 형태다. 1:1 구조 주의) 물리적 메모리가 연결된 것이 아니다 ex) 리스트, 스택, 큐 비선형 구조: 한 자료 뒤에 여러 개의 자료들이 존재하는 구조로 1:다 또는 다:다 구조 ex) 트리, 그래프 2. 데이터 저장 방식에 따라 순차자료구조: 메모리저장이 빈자리가 없이 순서대로 저장한다. 물리적 주소 순서 = 논리적 순서 삽입, 삭제를 하면 순서대로 저장해야 한다. 데이터가 이동되는 양이 많다 연결자료구조: 물리적인 순서가 불규칙적이다. 링크드 리스트 생각하면 편하다. 물리적 주소 != 논리적 순서 삽입, 삭제를 하면 연결 링크 정보만 수정해주면 된다. 스택과 큐 스택 가장 나중에 쌓인 데이터가 가장 먼저 출력하게 되는 자료구조.. 탑싯_1_소프트웨어 개발_2_소프트웨어 재사용 1. 소프트웨어 재사용 기존의 소프트웨어/소프트웨어 지식을 활용해 새로운 소프트웨어 구축 목적: 신뢰성, 생산성, 확장성 대상: 일반적인 지식, 설계 정보, 데이터 정보, 프로그램 코드 원칙 - 범용성: 일반적으로 사용할 수 있어야한다. - 모듈성: 최소한의 결합도 및 최대한의 응집력을 가져야 한다.(결국 연관된 것이 적어야 범용성이 높아지기 때문) - 하드웨어, 소프트웨어 독립성 - 일반성, 신뢰성 효과: 생산 단가 절감, 높은 품질의 소프트웨어를 공유할 수 있다 2. 역공학 이미 만들어진 시스템을 역으로 추적해 문서나 설계 기법 등의 자료를 얻는다 쉽게 설명해서 구현된 코드 등을 바탕으로 추상화된 설계를 만드는 것이다. Input: 원시코드, 목적 코드 등의 입출력 자료나 문서로 Output: 구조도.. 탑싯_1_소프트웨어 개발_1_소프트웨어 공학 개요 1. 소프트웨어 공학의 4가지 중요요소 1. 방법: 프로젝트 계획 수립, 시스템과 소프트웨어 분석 2. 도구: 생산성 혹은 일관성을 목적으로 사용하는 방법들을 자동화시킨다. 3. 절차: 적용된 방법, 요구되는 결과물, 품질을 보증하고 변경을 조정한다 4. 사람 중요! 2. 소프트웨어 개발 생명주기 - 타당성 검토-> 개발 계획-> 요구사항 분석-> 설계-> 구현-> 테스트-> 운용 -> 유지보수 - 선택한 모델은 프로젝트에 존재하는 리스크/불확실성을 최소화 시킬수 있게 선택해야 한다. ex) 폭포수 모델, 프로토타입 모델, 점진적 모델 - 모델의 종류 V모델 프로젝트 관리자나 개발자에게 어떤 활동이 수행되어야 하는지 명확하게 보여준다. 소프트웨어를 잘 모르는 고객도 이해시킬 수 있다. 요구사항이 바뀌지 .. S3를 이용한 사진 등록하기 개발 환경 aws s3 2.2.6 spring boot 3.x.x 1. s3 버킷 만들기 aws s3로 들어가서 "버킷 만들기" 클릭 -객체 소유권 인텔리제이로 들어가기 위해서는 키로 들어가야하는데 이떄는 ACL을 설정해줘 한다 - 이 버킷의 퍼블릭 액세스 차단 설정 public으로 다 연다( 모든 퍼블릭 액세스 차단 해체) 나머지는 변경 사항 없음 2. 버킷 정책 추가하기 버킷에 들어가 권한 클릭->정책 편집->정책 생성기 Principle => * action => DeleteObject, GetObject, PutObject 설정 resource => 버킷->속성-> Amazon 리소스 이름(ARN)에 있는 링크에다 + /*(중요) ex) arn:aws:s3:::example이면 arn:aws:s3.. 2022.06.30 백준 Q2178 학습 내용 : DFS, BFS의 차이점(어떤 것으로 구현해야 할지), 미로문제 구현방법 https://www.acmicpc.net/problem/2178 이 문제는 미로 문제를 구현하는 방법에 대해 묻는 문제이다. 미로 문제를 통해 (N,M)로 가는 가장 짧은 경로를 출력해야한다. 필자는 노드를 Class로 구현해 n,m,1인지0인지 유무(isOpened), 방문했던 노드인지(isVisited) 그 곳까지 가는 가장 짧은 경로(length)를 담았다. 그리고 가장 가에 있는 노드들을 다른 노드들과 똑같이 움직일수 있게 통일성을 맞추기 위해 겉을 0으로 감쌌다 ex) 10 01 -> 0000 0100 0010 0000 또한 이 문제는 최단 경로를 찾아야하기 때문에 DFS가 아닌 BFS로 구현해야한다. BF.. 2022.06.29 백준 Q1927 학습 내용 : 최소 힙 구현, PriorityQueue API를 이용한 최소힙 구현 이 문제는 최소 힙을 구현하는 문제이다. 필자는 API 사용 없이 구현을 한 후에 API를 사용해 구현하였다. static void addData(int data){ int currentIndex = ++size; while (currentIndex != 1 && list[currentIndex / 2] > data) { list[currentIndex] = list[currentIndex / 2]; currentIndex = currentIndex / 2; } list[currentIndex] = data; } 위 코드는 addData를 구현한 코드이다. currentIndex = ++size를 해 size를 하나 늘려.. 2022.06.28 백준 Q1874 학습 내용 : 스택 사용. 어떨 때 구현 가능하고 어떨 때 불가능한지 구분하는 방법 이 문제는 스택을 사용하여 입력받은 숫자 배열을 구현하는 방법을 묻는 문제이다. 원하는 배열을 wantedArray에 저장하고 inputStackNum은 다음 스택에 넣어야 할 숫자를 저장하게 했다(1~num까지). 만약wantedIndex가 num까지 도달했으면 이미 모든 wantedArray 배열이 끝났으므로 break; 시켜준다. 만약 스택이 비여있다면 inputStackNum의 값을 스택에 넣어주고 스택이 비여있지 않으면 가장 위에 있는 stack 값이 wantedArray[wantedIndex]값과 같은지 비교한다. 값이 같으면 wantedIndex++하고 stack.pop()해준다.(-) 출력. 만약 같지 않다.. 2022.06.27 백준 Q11651 학습 내용 : Comparable 인터페이스를 이용한 정렬 방식 수정과 정렬 이 문제는 바로 전 게시물인 Q11650과 비슷한 문제이지만 이번에는 Comparable 인터페이스를 이용해 한 클래스 안에서 comparTo와 객체에 대한 data를 동시에 넣었다. 클래스 안에 x,y좌표도 있기 때문에 compare로 인자 2개를 받는것이 아닌 compareTo로 객체와 인자 1개를 비교하면 된다. public int compareTo(Pointer o) { if(y>o.y) return 1; else if(y==o.y){ if(x>o.x) return 1; } return -1; } -코드 본문- package BaekJoon11651; import java.io.BufferedReader; import j.. 이전 1 2 3 4 5 6 다음