ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 2023.04.05
    내일배움캠프 2023. 4. 5. 21:25

    오늘은 페어프로그래밍 때 두 문제를 풀었다.

    하나는 좀 애먹었고 하나는 금방 풀었다.

    애먹은 게 이것.

    https://school.programmers.co.kr/learn/courses/30/lessons/120861?language=python3 

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    def solution(keyinput, board):
        answer = [0, 0] #현재 좌표 0,0 으로 초기화
        move = {'left': [-1, 0], 'right': [1, 0], 'up': [0, 1], 'down': [0, -1]} #방향별로 이동 좌표를 딕셔너리로 생성
        for i in keyinput: 
            for e, (a, k) in enumerate(zip(answer, key[i])): #enumerate 와 zip 동시에 사용
                answer[e] = a+k #answer[e] 에 answer의 e번째 인덱스 값(현재좌표)과 key[i]의 e번째 인덱스값의 합(이동값)을 할당(좌표 이동)
                if abs(answer[0]) > (board[0]-1)/2 or abs(answer[1]) > (board[1]-1)/2: #보드를 벗어나면 실행 취소
                    answer[e] -= k
        return answer #최종 좌표 출력

    저는 이렇게 풀었습니다요.

    이 중에 새롭게 알게된 문법들이 있죠

     

    첫 번째로 zip() 이라는 함수입니다.

    zip() 함수는 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 튜플의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환합니다. 설명이 좀 어렵게 들릴 수도 있는데요. 간단한 예제를 보면 이해가 쉬우실 겁니다.

    >>> numbers = [1, 2, 3]
    >>> letters = ['a', 'b', 'c']
    >>> for i in zip(numbers, letters):
    ...     print(i)
    ... 
    (1, 'a')
    (2, 'b')
    (3, 'c')

    위 예제를 보면 zip() 함수로 numbers 라는 리스트와 letters 라는 리스트를 묶어서 for문을 돌면서 출력하고 있습니다. 이 때 i 는 각 리스트의 같은 인덱스 값을 가진 요소를 묶어서 튜플 형태로 값을 가지게 되네요.

    >>> for i, j in zip(numbers, letters):
    ...     print(i, j)
    ... 
    1 a
    2 b
    3 c

    이렇게 병렬 처리로 따로 뽑아주는 것도 가능합니다.

    저는 이 함수로 move 라는 딕셔너리의 각 벨류와 answer로 선언한 현재 좌표를 따로 뽑아서 x좌표 y좌표 각 더하는 기능을 만들었습니다.

     

    두 번째로,

    enumerate()와 zip() 함께 사용할 때는 zip의 요소들을 괄호()로 묶어서 사용해주시면 됩니다.

    for e, (a, k) in enumerate(zip(answer, key[i])):

    이런식으로 말이죠.

     

    세 번째로는

    절대값 함수입니다.

    숫자 앞에 abs()를 씌워주시면 절대값으로 사용하실 수 있습니다.

    abs(-99) = 99

     

     

    그리고 장고 개인 과제가 시작됐는데요.

    이거 아주 어렵습니다요. 화이팅

    '내일배움캠프' 카테고리의 다른 글

    장고 개인프로젝트 ERD  (0) 2023.04.07
    TIL 2023.04.06  (0) 2023.04.06
    TIL 2023.04.04  (0) 2023.04.04
    TIL 2023.04.03  (0) 2023.04.03
    WIL 내일배움캠프 3주차  (0) 2023.03.31
Designed by Tistory.