ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4월 24일 TIL - 터벅터벅,,,
    TIL(Today I Learned) 2023. 4. 24. 22:38

    ▷ 오늘의 일정

    09:10 ~ 10:30 새로운 팀!
    10:30 ~ 12:00 장고 강의 듣기 4주차
    12:00 ~ 13:00 점 심 식 사
    13:00 ~ 18:00 장고 강의 듣기 4주차
    18:00 ~ 19:00 저 녁 식 사
    19:00 ~ 20:40 하루 공부 내용 정리 및 TIL
    20:40 ~ 21:00 하루 공부 내용 공유

     

    ▷ 오늘의 배움

    # 모델에 있는 값을 변경해서 JSON으로 바꿔주는 SerializerMethodField()
    
    # 글 목록을 불러오는데 나는 유저 아이디가 아닌 유저 이메일을 불러오고 싶다! 싶을 때 사용할 수 있다~
    class ArticleSerializer(serializers.ModelSerializer):
        user = serializers.SerializerMethodField(# method_name=''을 지정하면 get_<field_name> 대신 사용이 가능하다)
    
    	# get_<field_name> or method_name
        def get_user(self, obj):
            return obj.user.email # 여기서 obj는 article이다.
            #그 article에 해당하는 유저의 이메일을 유저 필드의 값으로 가져온다.
    
        class Meta:
            model = Article
            fields = '__all__'

     

    ▷ 오늘의 시도

    # https://school.programmers.co.kr/learn/courses/30/lessons/120837
    # 개미 군단
    # 문제 설명
    # 개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다.
    # 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다.
    # 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만,
    # 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다.
    # 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면
    # 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
    # 제한사항
    # hp는 자연수입니다.
    # 0 ≤ hp ≤ 1000
    
    # 장군개미 공격력 5
    # 병정개미 공격력 3
    # 일개미 공격력 1
    # hp = 사냥감의 체력
    
    # 사냥감의 체력을 가장 큰 공격력을 가진 장군개미부터 몇마리를 데리고 갈 수 있는 지 확인하자
    hp = 999
    answer = 0
    while True:
        if hp // 5:  # hp가 5로 나누어진다면 장군개미 공격 가능
            answer += hp//5
            hp = hp % 5
            if hp == 0:
                break
        elif hp // 3:  # hp가 3으로 나누어진다면 장군개미 공격 가능
            answer += hp//3
            hp = hp % 3
            if hp == 0:
                break
        elif hp // 1:  # hp가 1로 나누어진다면 장군개미 공격 가능
            answer += hp//1
            hp = hp % 1
            if hp == 0:
                break
    
    # 시간초과가 된다 와일문을 없애볼까
    
    if hp // 5:  # 먼저 장군개미로 공격이 가능한지 확인
        answer += hp//5
        hp = hp % 5
        if hp // 3:  # 장군개미 공격 후 병정개미 확인
            answer += hp//3
            hp = hp % 3
            if hp < 3:  # 일개미 확인
                answer += hp
        else:
            answer += hp
    elif hp // 3:
        answer += hp//3
        hp = hp % 3
        if hp < 3:
            answer += hp
    else:
        answer += hp
    
    # 모든 경우의수를 한번씩 써줬다.. 이렇게 풀고나서 다른사람의 풀이를 봤는데... 어마어마하다
    # 어차피 hp//5가 안나눠진다면 0이니까 나눈 몫과 그 나무지를 또 나눈 몫들을 더하면... 더하면... 완성...
    # 그리고 나는 반복문을 while문만 생각했는데 아주 큰 오산이었다. 개미들을 리스트로 만들고 for문을 활용하는 방법도 있었다.
    # 왜.. 항상 몇퍼센트가 부족한지 참... 더 많이 풀자!

     

     

    ▷ 오늘의 한줄

    아직 시작이니 좀만 더 부지런하게 공부하자!

    댓글

Designed by Tistory.