728x90
반응형
🔶해시
🔶유스케이스
≣ 목차
/ 오늘의 TIL /
해시
https://school.programmers.co.kr/learn/courses/30/lessons/131127
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
import java.util.HashMap;
import java.util.Map;
class Solution {
/**
* @param want 원하는 제품
* @param number 원하는 제품의 수량 마트 할인 제품
* @param discount 회원등록 날짜의 일수
* @return
*/
public static int solution(String[] want, int[] number, String[] discount) {
Map<String, Integer> want_map = new HashMap<>();
Map<String, Integer> dis_map;
//초기 값 세팅
for (int i = 0; i < want.length; i++) want_map.put(want[i], number[i]);
int answer = 0;
//회원 가입 최대 날짜 범위
A: for (int i = 0; i <= discount.length-10; i++) {
dis_map = new HashMap<>();
//회원은 10개만 할인 받을 수 있음
for (int j = i; j < i+10; j++) {
//원하는 물건이 아닌 경우
if (!want_map.containsKey(discount[j])) continue A;
dis_map.put(discount[j], dis_map.getOrDefault(discount[j], 0) + 1);
//연속적으로 일치가 안되는 경우(원하는 물건보다 개수가 많은 경우)
if (dis_map.get(discount[j]) > want_map.get(discount[j])) continue A;
}
answer++;
}
return answer;
}
}
리팩토링
할인하는 상품의 개수가 수량과 일치하면 answer 값에 +1 한다.
import java.util.HashMap;
import java.util.Map;
class Solution {
/**
* @param want 원하는 제품
* @param number 원하는 제품의 수량 마트 할인 제품
* @param discount 회원등록 날짜의 일수
* @return
*/
public static int solution(String[] want, int[] number, String[] discount) {
Map<String, Integer> want_map = new HashMap<>();
Map<String, Integer> dis_map;
//초기 값 세팅
for (int i = 0; i < want.length; i++) want_map.put(want[i], number[i]);
int answer = 0;
//회원 가입 최대 날짜 범위
for (int i = 0; i <= discount.length-10; i++) {
dis_map = new HashMap<>();
//회원은 10개만 할인 받을 수 있음
for (int j = i; j < i+10; j++) {
dis_map.put(discount[j], dis_map.getOrDefault(discount[j], 0) + 1);
}
//할인하는 상품의 개수가 수량과 일치하는 경우
if (dis_map.equals(want_map)) answer++;
}
return answer;
}
}
유스케이스(UseCase) Diagram
1) 유스케이스 식별
- 액터가 원하는 시스템 제공 기능은 무엇인지
- 시스템에 어떤 정보를 CRUD하고 싶은지
- 모든 기능 요구사항을 만족할 수 있도록 유스케이스가 모두 식별 되었는지
2) 관계 정의
- 연관 관계: 액터와 유스케이스 간 상호 작용이 존재하는지
- 포함 관계: 유스케이스를 실행하기 위해 반드시 실행되어야 하는 유스케이스가 존재하는지
- 확장 관계: 유스케이스를 실행함으로써 선택적으로 실행되는 유스케이스가 존재하는지
- 일반화 관계: 액터 또는 유스케이스가 구체화 된 다른 액터 또는 유스케이스를 가지고 있는지
구성요소: 시스템, 액터, 유스케이스, 관계
- 시스템: 현재 개발할 프로그램
- 액터: 시스템 외부에 존재하며 시스템과 상호작용 하는 모든 것
시스템을 사용자는 사용자, 시스템을 사용함으로서 상호작용되는 다른 시스템 등
ex) 고객, 회원, 신용카드 인증 회사, 관리자...- 프라이머리 액터: 시스템 사용 주체
- 세컨더리 액터: 시스템과 상호작용하는 다른 시스템
<<actor>>를 포함하여 표기한다.
- 유스케이스: 사용자의 입장에서 바라본 시스템의 추상적인 기능
ex) 회원가입, 상품검색, 주문... - 관계: 액터 <-> 유스케이스, 유스케이스 <-> 유스케이스 관계
- 연관(Assosiation): 실선 표현
- 고객 -> 회원가입, 상품목록조회, 상품검색...
- 의존(Dependency)
- 포함(Include)
- <<include>>, <<포함>>
- 상품 주문 -<<include>>-> 사용자 인증
- 확장(Extend)
- <<extend>>, <<확장>>
- 상품상세 조회 -<<extends>>-> 상품목록 조회
- 포함(Include)
- 일반화(Generalization)
- 추상화한 유스케이스 또는 액터를 그룹화 시킨다.
- 실선 표기
- 카테고리관리 <- 카테고리 등록, 수정, 삭제...
- 연관(Assosiation): 실선 표현
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
[240612] swagger ui api 사용하기 (0) | 2024.06.12 |
---|---|
[240611] 해시맵 활용 (0) | 2024.06.11 |
[240609] 배울 게 태산 (0) | 2024.06.09 |
[240608] 환경설정 끄적끄적 (0) | 2024.06.08 |
[240607] queue 복습2 (0) | 2024.06.07 |
댓글