Curriculum/AI웹개발자_내일배움캠프

Story 17. TIL

작은코딩 2022. 3. 11. 00:56

 

 


👀 오늘 한 일

  • 프로젝트 세팅
  • 알고리즘 1문제 풀기
  • 피드 기능 구현 시작

 

📚 오늘 배운 것

  • poetry 오류 잡기
  • git contributor 자격이 있다면 포크 뜨지 말고 브렌치 나눠서 작업하는 게 효율적이다.

 

😄 오늘의 TMI

오늘 프로젝트를 설정하면서 많은 에러를 만났다. poetry install 커멘드를 통해서 패키지 설치를 했음에도 불구하고 인식을 못해서 pip install 커멘드를 통해 다시 설치를 하고 poetry 의존성을 맞춘다거나 잘못된 패키지가 다운돼서 mypy 사용 시 에러가 뜨는 등 생각지도 못한 에러들이 튀어나왔는데 그래도 모두 세팅을 잘(?) 마친 거 같다. 

 

깃 허브 stats에 언어를 반영하기 위해 포크를 떠서 내 레포지토리에서 작업을 하고 메인 레포지토리로 풀리퀘를 하는 방법을 사용하고 있었는데 오늘 정승원 튜터님의 튜터링을 통해서 비선호되는 방식이라는 걸 알게 되었다,, 추가로 깃 헙 사용언어가 아무 필요도 없다는 것도,, 실적을 쌓고 싶으면 스택오버플로우 랭킹을 쌓는 게 훨씬 도움 되고 인정받을 거라는 조언을 받을 수 있었다.

 

뜬금없지만 어제 설계했던 DB 코드를 업데이트하며 20,000

from django.contrib.auth.models import PermissionsMixin, UserManager, AbstractBaseUser
from django.db import models


# Create your models here.


class BaseModel(models.Model):
    updated_at = models.DateTimeField(auto_now=True)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        abstract = True


class Users(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(unique=True)
    username = models.CharField(max_length=30)
    nickname = models.CharField(max_length=30)
    image = models.CharField(max_length=256)
    zipcode = models.IntegerField(blank=True, null=True)
    address = models.CharField(max_length=256, blank=True, null=True)
    phonenumber = models.CharField(max_length=11, blank=True, null=True)

    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    updated_at = models.DateTimeField(auto_now=True)
    created_at = models.DateTimeField(auto_now_add=True)

    objects = UserManager()

    USERNAME_FIELD = 'email'  # email을 사용자의 식별자로 설정
    REQUIRED_FIELDS = ['username']  # 필수입력값

    class Meta:
        db_table = "users"


class UsersFav(BaseModel):
    class Meta:
        db_table = "usersfav"


class Feed(BaseModel):
    user_id = models.ForeignKey(Users, on_delete=models.CASCADE, related_name="feed", db_column="user_id")
    image = models.CharField(max_length=256)
    content = models.CharField(max_length=500, blank=True, null=True)

    class Meta:
        db_table = "feed"


class FeedComment(BaseModel):
    user_id = models.ForeignKey(Users, on_delete=models.CASCADE, related_name="feed_comment", db_column="user_id")
    feed_id = models.ForeignKey(Feed, on_delete=models.CASCADE, related_name="feed_comment", db_column="feed_id")
    content = models.CharField(max_length=200)

    class Meta:
        db_table = "feedcomment"


class FeedLike(BaseModel):
    user_id = models.ForeignKey(Users, on_delete=models.CASCADE, related_name="feed_like", db_column="user_id")
    feed_id = models.ForeignKey(Feed, on_delete=models.CASCADE, related_name="feed_like", db_column="feed_id")
    like = models.IntegerField()

    class Meta:
        db_table = "feedlike"


class FeedBookmark(BaseModel):
    user_id = models.ForeignKey(Users, on_delete=models.CASCADE, related_name="feed_bookmark", db_column="user_id")
    feed_id = models.ForeignKey(Feed, on_delete=models.CASCADE, related_name="feed_bookmark", db_column="feed_id")
    bookmark = models.IntegerField()

    class Meta:
        db_table = "feedbookmark"


class Info(BaseModel):
    url = models.CharField(max_length=256)

    class Meta:
        db_table = "info"


class PlantCategory(BaseModel):
    category = models.CharField(max_length=45)

    class Meta:
        db_table = "plant_category"


class Plant(BaseModel):
    plant_category_id = models.ForeignKey(PlantCategory, on_delete=models.CASCADE, related_name="plant",
                                          db_column="plant_category_id")

    class Meta:
        db_table = "plant"


class ProductCategory(BaseModel):
    category = models.CharField(max_length=45)
    plant_id = models.ForeignKey(Plant, on_delete=models.CASCADE, related_name="product_category", db_column="plant_id",
                                 null=True)

    class Meta:
        db_table = "product_category"


class Product(BaseModel):
    product_category_id = models.ForeignKey(PlantCategory, on_delete=models.CASCADE, related_name="product",
                                            db_column="product_category_id")
    name = models.CharField(max_length=100)
    price = models.IntegerField()
    size = models.IntegerField()
    info = models.CharField(max_length=500)
    qty = models.IntegerField(default=0)
    image = models.CharField(max_length=256)
    image_tag = models.TextField(null=True, blank=True)

    class Meta:
        db_table = "product"


class OrderBasket(BaseModel):
    user_id = models.ForeignKey(Users, on_delete=models.CASCADE, related_name="order_basket", db_column="user_id")
    product_id = models.ForeignKey(PlantCategory, on_delete=models.CASCADE, related_name="order_basket", db_column="product_id")
    qty = models.IntegerField()

    class Meta:
        db_table = "order_basket"


class Order(BaseModel):
    user_id = models.ForeignKey(Users, on_delete=models.CASCADE, related_name="order", db_column="user_id")
    status = models.IntegerField(default=2) # 처리중-2, 완료-1, 실패-0

    class Meta:
        db_table = "order"


class OderProduct(BaseModel):
    order_id = models.ForeignKey(Order, on_delete=models.CASCADE, related_name="order_product", db_column="order_id")
    product_id = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="order_product", db_column="product_id")
    qty = models.IntegerField()

    class Meta:
        db_table = "order_product"

알고리즘 문제

https://programmers.co.kr/learn/courses/30/lessons/77484

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

내 정답

def solution(lottos, win_nums):
    score = 0
    zero_num = 0

    for lotto in lottos:
        if lotto == 0:
            zero_num += 1
        elif lotto in win_nums:
            score += 1

    rank = {0: 6, 1: 6, 2: 5, 3: 4, 4: 3, 5: 2, 6: 1}
    answer = [rank[score+zero_num], rank[score]]

    return answer

'Curriculum > AI웹개발자_내일배움캠프' 카테고리의 다른 글

Story 19. TIL  (0) 2022.03.12
Story 18. TIL  (0) 2022.03.11
Story 16. TIL  (0) 2022.03.09
Story 15. TIL  (0) 2022.03.09
Story 14. TIL  (0) 2022.03.07