미경이 스터디 5.31

코변·2022년 5월 30일
0
post-thumbnail

Photo by Pietro Mattia on Unsplash

TDD라는 개념을 알게된 후에 코드를 작성할 때 망설임이 없어진 것 같다. 우선 동작(구현가능한)하는 코드를 먼저 작성한 후 더 효율적인 코드로 고쳐나가면 된다고 생각하니 키보드에 올라간 손이 왠지 가볍다

수박수박수박수박수박수?

def solution(n):
    answer = ''
    for i in range(1, n+1):
        if i % 2 == 0:
            answer += '박'
        else:
            answer += '수'
    return answer

문제를 보고 가장 쉽게 풀 수 있는 방법을 생각해 위의 코드를 작성하고 아래와 같이 삼항연산자로 코드 길이도 줄이고 answer에 일일이 더하는 답이 아닌 answer에 담고 마지막에 join으로 묶어 return하는 함수를 만들었다.

def solution(n):
    answer = ['박' if iter_num %2 ==0 else '수' for iter_num in range(1,n+1)]
    return ''.join(answer)

p와 y의 개수

def solution(s):
    p_cnt = 0
    y_cnt = 0
    for char in s:
        if char.lower() == 'p':
            p_cnt += 1
        elif char.lower() == 'y':
            y_cnt += 1
            
    return p_cnt == y_cnt

이 문제도 테스트를 먼저 작성하고 코드를 고쳐갔는데 첫번째 테스트에서 lower를 사용한게 or로 두개의 조건을 묶는 것보다 효율적이어서 잘 접근한 것 같다.

def solution(s):
    answer = [1 if char.lower() == 'p' else -1 if char.lower() == 'y' else 0 for char in s]
    return sum(answer) == 0

p의 값과 y의 값을 각각 1과 -1로 두면 두 알파벳의 갯수가 같으면 0이 된다는 사실을 생각해 이렇게 함수를 만들어 보았다. 꽤 효율적으로 잘 만든 것 같다.

같은 숫자는 싫어

def solution(arr):
    answer = []
    for idx in range(len(arr)):
        if idx == len(arr)-1:
            answer.append(arr[idx])
            break
        if arr[idx] != arr[idx+1]:
            answer.append(arr[idx])
    return answer

이건 시간이 없어서 테스트 코드로만 결과를 받았는데 내일 아침에는 이 코드를 한번 고쳐봐야겠다. out of range 에러를 극복할 필요가 있다.

그 밖의 문제

가운데 글자 가져오기
문자열 내 마음대로 정렬하기

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글