1 배운내용
1)알고리즘코드카타

제한사항
- 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
- 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
- 놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수
입출력 예시
| price | money | count | result |
| 3 | 20 | 4 | 10 |
입출력 예 #1
이용금액이 3인 놀이기구를 4번 타고 싶은 고객이 현재 가진 금액이 20이라면, 총 필요한 놀이기구의 이용 금액은 30 (= 3+6+9+12) 이 되어 10만큼 부족하므로 10을 return 합니다.
정답
class Solution {
fun solution(price: Int, money: Int, count: Int): Long {
return Math.max(count * (price.toLong() + price * count) / 2L - money, 0)
}
}
class Solution { fun solution(price: Int, money: Int, count: Int): Long {
var answer: Long = -1 var
usePrice: Long = 0 for( i in 0 .. count){
usePrice += price.toLong() * i.toLong() } if(money - usePrice < 0) answer = -1L * (money - usePrice)
else return 0 return answer } }
이라고 합니다....
2) 백오피스 프로젝트 아이디어, API명세서, ERD 작성, 와이어프레임 작성, 역할분담.
회의록
-아이디어: 지역맛집 커뮤니티 게시판 관리자 사이트
-이벤트 스토링: 팀원들 스트링 구성과 아이디어 구체화에 참여함.(피그마)
엔티티 이름: 리뷰 게시판
댓글: 코멘트, 리뷰게시판 댓글
사용자 엔티티 이름: 유저(역할을 나누어 사용자와 관리자로 나누기로 함).
공지사항 엔티티 노티스: 관리자가 사용자에게 알려줄 것을 작성하는 글
-엑쳐 구분
컴온(일반 회원)
: 회원가입, 로그인, 로그아웃, 프로필 수정, 회원 탈퇴가 가능하다.
: 본인이 작성한 게시글, 댓글만 수정, 삭제 가능하다.
:유저네임 최소 4자~ 10자 알파벳 소문자, 숫자로 구성.
:비밀번호: 8~15자, 대소문자, 숫자, 특수문자 포함되어 구성되어 있을 것.
어드민( 관리자)
: 회원가입, 로그인, 로그아웃, 프로필 수정.
:관리자 아이디는 일방적으로 서버에서 부여한다. 관리자가 바뀔수는 있어도 계정 탈퇴는 불가능하다.
:관리자는 게시글을 작성할 수 없다. 수정, 삭제는 정책에 맞지 않을시 가능하다. 게시글 조회 가능.
:댓글은 작성, 수정, 조회, 삭제가 가능하다.
:관리자는 공지 작성, 공지조회, 공지수정, 공지 삭제가 가능하다.
게시판 작성시 필요한 정보는 구현시 지정해서 하도록 유도한다.
공지사항을 댓글 작성 불가하다.
필수구현
사용자 인증 기능
- 회원가입 기능
- username, password를 Client에서 전달받기
- username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)로 구성되어야 한다.
- password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자로 구성되어야 한다.
- DB에 중복된 username이 없다면 회원을 저장하고 Client 로 성공했다는 메시지, 상태코드 반환하기
- 회원 권한 부여하기 (ADMIN, USER) - ADMIN 회원은 모든 게시글, 댓글 수정 / 삭제 가능
- 로그인 및 로그아웃 기능
- username, password를 Client에서 전달받기
- DB에서 username을 사용하여 저장된 회원의 유무를 확인하고 있다면 password 비교하기
- 로그인 성공 시, 로그인에 성공한 유저의 정보와 JWT를 활용하여 토큰을 발급하고, 발급한 토큰을 Header에 추가하고 성공했다는 메시지, 상태코드 와 함께 Client에 반환하기
- [ ] 프로필 관리
- 프로필 수정 기능
- 이름, 한 줄 소개와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다.
- 비밀번호 수정 시에는 비밀번호를 한 번 더 입력받는 과정이 필요합니다.
- 최근 3번안에 사용한 비밀번호는 사용할 수 없도록 제한합니다.
- [ ] 게시물 CRUD 기능 (배달앱일 경우 : 주문 CRUD 기능)
- 게시물 작성, 조회, 수정, 삭제 기능
- 게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며 이는 JWT와 같은 토큰으로 검증이 되어야 할 것입니다.
- 예컨대, 내가 작성한 글을 남이 수정하거나 삭제할 수는 없어야 하고 오로지 본인만 수정/삭제 할 수 있어야겠죠?
- 전체 게시글 정보를 조회하는 기능도 필요합니다.
- 게시물 작성, 조회, 수정, 삭제 기능
- [ ] 댓글 CRUD 기능 (배달앱일 경우 : 리뷰 CRUD 기능)
- 댓글 작성, 조회, 수정, 삭제 기능
- 사용자는 게시물에 댓글을 작성할 수 있고 본인의 댓글은 수정 및 삭제를 할 수 있어야 합니다.
- 또한, 게시물과 마찬가지로 댓글 조회를 제외한 나머지 기능들은 인가(Authorization)개념이 적용되어야 합니다.
- 댓글 작성, 조회, 수정, 삭제 기능
로컬데이터타임, 타임존 고민.. 공통으로 지정
PostgreSQL에서는 TIMESTAMP,
Kotlin에서는 LocalDateTime, createdAt: LocalDateTime, DB에서는 TimeStamp 으로 통일함
내용길이 한글자에서 100자이내. 공식문서에는 TEXT 타입으로 추천하는 것으로 알고 있음
- 특이사항없으면 PostgreSQL에서 String경우 TEXT로 한다.
공지사항에서 수정될수 있는 부분: 제목 내용 수정되어야 함. 타이틀은 1에서 50자이내, 내용은 1에서 1000자내로 정함.
단방향 연관관계
Comment는 Review, User를 알고 있다. / User는 Comment를 모름 / Review는 Comment를 모름
Review는 User를 알고 있다. / User는 Review를 모름
Notice는 User를 알고 있다. / User는 Notice를 모름
필수구현
-회원가입기능 : 김철학
-로그인, 로그아웃 기능 : 김철학
-프로필 수정기능 : 노하영
-리뷰 CRUD :곽준선
-Comment CRUD : 노하영
-Notice CRUD : 박지영
- 브랜치 전략
- Git flow - 복잡
- Github flow - 단순
- Git flow도 아니고, Github flow도 아닌 방식 선택
- main 브랜치는 안 쓰고, develop 브랜치랑 feature/ 브랜치들 사용
- 그래도 main 브랜치 없애진 않음
- 기본: feature/ 브랜치를 develop 브랜치에서 출발시키기
- feature/ 브랜치에서 feature/ 브랜치 시작하는 것도 허용
**! 약속: feature 브랜치는 develop에 바로 merge하지 않음, 항상 Pull Request 이용**
(코드 리뷰까지는 못하지만, 컴파일 에러 및 충돌 검사)
S.A 자료 URI
https://www.notion.so/B-3-SA-97dcf2c2b2af4d3aaf3d60d68bfbdd4f
'개발일지' 카테고리의 다른 글
| 2024.01.24 TIL (0) | 2024.01.24 |
|---|---|
| 2024.01.23 TIL (0) | 2024.01.23 |
| 2024.01.19 TIL (0) | 2024.01.19 |
| 2024.01.18 TIL (0) | 2024.01.18 |
| 2024.01.17 TIL (0) | 2024.01.17 |