Python/코딩 테스트

프로그래머스 lv1 파이썬 정답률 80% 이상

Young_Metal 2022. 9. 19. 16:17

음양 더하기 

def solution(absolutes, signs):
    answer = 0
    for i in range(len(absolutes)):
        if signs[i] : #불리언이라서, 'false'가 아님
            answer += absolutes[i]
        else:
            answer -= absolutes[i]
    return answer

핸드폰번호 가리기

리스트로 변경해서 풀라고 했는데 자꾸 안되었다. 

for문을 쓰는 것을 지양하고자 그저 구글링을 하였고 그 링크를 토대로 공부하겠다. 있는 값을 변경하려 했는데 그게 아니라 새로운 빈 깡통을 만들어서 넣는 것이건 같다. 

 

내가 쓴 코드에서 자꾸 안되길래 확인을 위해서

  print(list(phone_number))

이걸 넣었더니 null이 떴다. 그것을 보고 아 이 코드는 안되는 것이구나를 깨달았다. 

그래서 answer를 아예 빈 칸으로 시작해서 len을 통해서 전화번호의 길이를 받아 -4한것만큼은 *곱하기로 특수문자를 한다. 그리고는 뒤 4개와 *의 합으로 정답이 나오게 된다. 

def solution(phone_number):
    answer = ''
    
    phone_number_len = len(phone_number)
    
    answer = '*' * (phone_number_len - 4)
    
    answer += phone_number[-4:]
    
    return answer

내적

80%길래 개 어려울줄 알았는데 풀긴 풀었다.

def solution(a, b):
    answer = 0
    for i in range(len(a)):
        answer += a[i]*b[i]
    return answer

가운데 숫자 반환

처음에 잘 안되길래 왜 안되지 했다가, ()를 이용해서 연산의 우선순위를 주지 않았던것과 2개의 글자를 출력하기 위해서는 슬라이스가 [0:1]이 아닌, [0:2]여야 한다는 것을 깨달았다.  

def solution(s):
    if len(s)%2:
        answer = s[(len(s)-1)//2]
    else: 
        answer = s[(len(s)//2)-1:(len(s)//2)+1]
    return answer

이 이후부터는 문자열을 갖고 노는 문제들이 많다. 

Lv1은 아마도 앞으로 한 두 포스팅을 하고 나면 마무리 될 것 같다. 

10월 15일에 볼 코테를 준비해야하고, C++너무 까먹어서 LV1들을 보면서 다시 공부해야겠다.