본문 바로가기
WIL&TIL/TIL

20230404 TIL - 알고리즘, 2주차 숙제

by 코드뭉치 2023. 4. 4.

알고리즘 - 페어 프로그래밍

 

1. 배열 두배 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/120809

이미 한번 풀어본 문제이기 때문에 다른 방식으로 풀 수 있는 방법들을 생각해보았다.

def solution(numbers):
	a = []
    for k in numbers:
        a.append(k*2)
    return a
def solution(numbers):
    a = list(map(lambda x: x*2 ,numbers))
    return a
def solution(numbers):
    return [i*2 for i in numbers]

 

 

2. 배열 뒤집기

https://school.programmers.co.kr/learn/courses/30/lessons/120821

def solution(num_list):
    result = []
    for i in range(len(num_list)-1,-1,-1):
        result.append(num_list[i])
    return result
def solution(num_list):
    return num_list[:-1]

3. 있어보이게 알고리즘 푸는 법

 

*리스트 컴프리헨션

[식 for 항목 in 순회 가능한 객체]

 

*람다 함수

lambda 매개변수: 매개함수

 

*맵 함수

map(함수, 순회가능한 객체)

 

*filter 함수

filter(함수, 순회가능한 객체)

 


2주차 숙제 

숙제1 

회원가입 시 elif문으로 username이 같을 경우 회원가입이 되지 않게 만들기 

 

UserModel.objects.filter(username=username).exists():

UserModel에서 객체를(objects) 필터링하는데(filter),

username필드가 username과 일치하는 객체가 있는지(exists)

여부를 판단해 True 혹은 False를 반환한다.

def sign_up_view(request):
    if request.method == 'GET':
        return render(request, 'user/signup.html')
    elif request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        password2 = request.POST.get('password2', None)
        bio = request.POST.get('bio', None)

        if password != password2:
            return render(request, 'user/signup.html')
        elif UserModel.objects.filter(username=username).exists():
            return render(request, 'user/signup.html')
        else:
            new_user = UserModel()
            new_user.username = username
            new_user.password = password
            new_user.bio = bio
            new_user.save()
            return redirect('/sign-in')

 

숙제2

로그인 성공시 화면에 "로그인 성공! "대신 사용자 이름을 출력하도록 변경

 

return HttpResponse("로그인 성공!")을 

return HttpResponse(me.username)으로 바꿔주기만 하면 끝

def sign_in_view(request):
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)

        me = UserModel.objects.get(username=username)  
        if me.password == password:  
            request.session['user'] = me.username  
            return HttpResponse(me.username)
        else:
            return redirect('/sign-in')
    elif request.method == 'GET':
        return render(request, 'user/signin.html')

 

'WIL&TIL > TIL' 카테고리의 다른 글

20230406 TIL  (0) 2023.04.06
20230405 TIL - 알고리즘  (1) 2023.04.05
20230403 TIL  (0) 2023.04.03
20230401 TIL  (0) 2023.04.01
20230331 TIL 알고리즘과 아이컨택하기  (2) 2023.03.31

댓글