개발일지

2024.01.22 TIL

과일바구니♡ 2024. 1. 22. 21:00

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