클래스/└ TIL

<TIL> 220324 strip(), 제스트

디벅잉 2022. 3. 25. 01:32
728x90

 

🌱

 

자바스크립트

CSS에 영향받는 innerText 보다는 textContent 사용하기

기존 노드를 제거하고 다시 생성하는 innerHTML 보다는 insertAdjacentHTML 사용하기

 

코드리뷰

항해99 알고리즘 2주차 시험을 끝내고 팀원들과 코드리뷰를 진행하였습니다.

프로그래머스 43165번 타켓 넘버 코드는 아래와 같이 DFS로 작성하여 풀이했습니다.

sum_list를 만들어 sum들을 저장하고, 마지막에 for문으로 돌면서 target과 같은지 확인하여 카운트하는 코드입니다.

팀원들과 얘기를 나누면서 sum_list 변수가 불필요하다는 것을 알게 되었습니다.

def solution(numbers, target):
    answer = 0

    # 리스트 생성: 합계를 하나씩 계산해서 저장
    sum_list = list()

    # 깊이우선탐색으로 합계를 하나씩 계산
    # 매개변수: 몇번째 숫자인지?, 현재까지 합계는? 2가지 대입
    def dfs(idx, cur_sum):
        # 인덱스가 주어진 숫자와 같아지면 합계를 구한 것
        # 합계 리스트에 추가하고 dfs 종료
        if idx == len(numbers):
            sum_list.append(cur_sum)
            return

        # 인덱스에 해당하는 숫자를 더하는 dfs
        sum_plus = cur_sum + numbers[idx]
        # 다음번 인덱스로 넘어감
        dfs(idx + 1, sum_plus)

        # 인덱스에 해당하는 숫자를 빼는 dfs
        sum_minus = cur_sum - numbers[idx]
        # 다음번 인덱스로 넘어감
        dfs(idx + 1, sum_minus)

    # 인덱스 0, 합계 0부터 dfs 시작
    dfs(0, 0)

    # 합계 리스트에 4가 있으면 answer +1
    for i in range(len(sum_list)):
        if sum_list[i] == target:
            answer += 1

    return answer

아래는 sum_list를 삭제하고 리프노드에 도달하였을 때 target과 비교를 해서 count를 더하는 최종코드입니다.

def solution(numbers, target):
    answer = 0

    def dfs(idx, cur_sum):
        if idx == len(numbers):
            if cur_sum == target:
                nonlocal answer
                answer += 1
                return
            else:
                return

        sum_plus = cur_sum + numbers[idx]
        dfs(idx + 1, sum_plus)

        sum_minus = cur_sum - numbers[idx]
        dfs(idx + 1, sum_minus)

    dfs(0, 0)

    return answer

 

백준: 파이썬

stdin.readlin()으로 문자열을 받아 올 때 공백 문자가 들어오는 경우가 있다는 것을 알게 되었습니다.

아래의 예제에서는 "."이 들어와야 하는데 ". "와 같이 들어올 수 있습니다.

strip() 또는, 오른쪽에만 공백이 들어오므로 rstrip()으로 공백을 제거해야 합니다.

string_world = stdin.readline().rstrip()
if string_world == ".":
    break

정렬 기준을 달리하여 정렬을 두번 진행할 수 있습니다.

sorted_list = sorted(sorted(word_list), key=lambda x: len(x))

 

항해톡

발표하시는 분들이 설명을 잘해주셔서 풀어쓰자면 끝도 없을 것이므로 한줄요약 해보겠습니다.

OSI 7계층: 인터넷을 통해 데이터를 전달하기 위해 필요한 캡슐화/역캡슐화 과정

DB 인덱스: 데이터베이스에서 자주 찾는 자료를 인덱싱하여 빨리 찾는 기술

 

제스트

제스트를 이용한 테스트의 기본구성은 다음과 같습니다.

test("테스트 이름", 콜백함수);

콜백함수의 기본 형태는 다음과 같습니다.

() => {
  expect(sum(2, 3)).toBe(5);
}

expect는 우리가 실행할 테스트 케이스입니다.

.toBe에는 우리가 원하는 결과값이 들어가게 됩니다.

.toBe와 같이 결과를 확인하는 부분을 matchers라고 부릅니다.

matchers에는 종류가 많습니다.

.toEqual() - 객체 확인

.not - matchers를 반대로 해석

.toBeGreaterThan() - 숫자 값 비교

.toBeCloseTo() - 정확한 숫자 확인이 어려운 경우 같은 값으로 취급

.toMatch(/RegExp/) - 정규표현식으로 조건을 만족하는 문자열 포함여부 확인

.toContain() - 배열 또는 이터러블에서 주어진 값 포함여부 확인

 

그리고

몇달전 프로그래머스에서 풀이를 하다 답을 못찾고 다른 사람의 풀이를 2개나 보는 바람에 점수가 900점대 중반으로 훅 떨어졌습니다. 드디어 1000점을 다시 넘겼습니다! 백준 실버3 등급도 달성하였습니다! 알고리즘 풀이를 하다보면 코드의 흐름을 읽는 능력이 느는 것이 느껴집니다!!

 

728x90