본문 바로가기

개발일지/TIL

TIL 23-04-05

1. 프로그래머스 LV1 - 콜라츠 추측 

 문제점

1-1. 입력된 수가 짝수라면 2로 나눕니다. 
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 
작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요.
단,주어진 수가 1인 경우에는 0을, 
작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.
# 입력된 수를 짝수,  % 2 <- // 2
# 입력된 수가 홀수, *3 +1
# 이 작업을 1이 될때까지 반복
# 반복 횟수 500 이하인 경우 반복 횟수 출력
# 주어진 값이 1인 경우 0 출력
# 반복 횟수 500 이상인 경우 -1 출력

 시도해 본 것들

def solution(num):
    answer = 0

    if num == 1:
        return 0

    while num > 1:
        answer += 1
        # 짝수일 때
        if num % 2 == 0:
            num = num % 2
        else:
            num = num * 3 + 1

        if answer == 500:
            return -1
        else:
            continue
    return answer

반복문이 바로 멈추는 현상 발생

 

if num % 2 == 0:
    num = num % 2
    print(num)

출력을 살펴본 결과 짝수 if문 진입시 멈춤
print(num)을 찍어본 결과 0 출력

num % 2를 num // 2로 변경

 해결 방법

def solution(num):
    answer = 0

    if num == 1:
        return 0

    while num > 1:
        answer += 1
        # 짝수일 때
        if num % 2 == 0:
            num = num // 2
        else:
            num = num * 3 + 1

        if answer == 500:
            return -1
    return answer

 알게 된 점

 

 

2. Django - 개인과제

 urls.py

'read/1'으로 요청을 했을 경우의 흐름

# main이 되는 파일
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
   
    path('', include('myapp.urls')),
]

'read/1'으로 요청이 오면 myapp.urls로 이동

# myapp에있는 views를 사용하겠다.
from myapp import views

urlpatterns = [
    # path(url주소, 모듈명.함수명)
    # <>는 가변 데이터
    path('read/<id>/', views.read)
]

read를 찾아서 views.read로 이동

# id는 가변 데이터를 전달 하기 위한 매개 변수
def read(request, id):
    global topics
    article = ''
    for topic in topics:
        if topic['id'] == int(id):
            article = f'<h2>{topic["title"]}</h2>{topic["body"]}'

    return HttpResponse(HTMLTemplate(article))

read 함수를 실행 클라이언트로 return 반환

 

Django는 이전 팀 프로젝트 import 이슈보다 더 막막한 기분이든다. 

 

 

'개발일지 > TIL' 카테고리의 다른 글

TIL 23-04-07  (2) 2023.04.07
TIL 23-04-06  (0) 2023.04.06
TIL 23-04-04  (0) 2023.04.04
TIL 23-04-03  (2) 2023.04.03
TIL 23-04-02  (0) 2023.04.02