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)
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 에러를 극복할 필요가 있다.
가운데 글자 가져오기
문자열 내 마음대로 정렬하기