https://school.programmers.co.kr/learn/courses/30/lessons/12948
처음에는 다음과 같이 풀었다. 하지만 에러가 떠버린다.
phone_number = "01033334444"
num_list = list(map(int, str(phone_number)))
for i in range(-1, -5, -1):
num_list[i] = "*"
result = ''.join(num_list)
print(result)
핸드폰 번호 가리기.py", line 21, in <module>
result = ''.join(num_list)
^^^^^^^^^^^^^^^^^
join 함수는 문자열을 리스트로 바꿔주는 역할을 하는데, 반복문을 지나면서 정수와 문자열 자료형이 섞여버리면서 문제가 생긴 것이다. 따라서 다음과 같이 고쳐준다.
phone_number = "01033334444"
num_list = list(phone_number)
for i in range(-1, -5, -1):
num_list[i] = "*"
result = ''.join(num_list)
print(result)
이렇게 하니깐 출력이 잘 된다! 하지만.. 내가 문제를 잘못 이해하고 있었다. 마지막 4자리를 별표처리 하는 것이 아니라, 4자리를 제외한 나머지를 전부 별표처리 하는 것이었다.. 그래서 코드를 다시 고쳐줬는데, 사실 반복문만 좀 고쳐주면 된다.
def solution(phone_number):
num_list = list(phone_number)
for i in range(0, len(phone_number) - 4):
num_list[i] = "*"
result = ''.join(num_list)
return result
최종적으로는 위와 같이 해야 잘 통과가 된다. 반복문을 어떻게 처리했는지 잘 관찰하자.
그리고, 다른 사람들의 풀이를 찾아봤는데.. 역시나 한줄 풀이가 존재한다. 프로그래머스에는 고수들이 참 많은 듯 하다.
def hide_numbers(s):
return ('*'*(len(s)-4)) + s[-4:]
이렇게나 간단히 쓸 수 있는 문제였다니 ㅋㅋ
'Algorithm > Programmers lv.1' 카테고리의 다른 글
[프로그래머스] 수박수박수박수박수박수? (join함수) (0) | 2024.08.25 |
---|---|
[프로그래머스] 가운데 글자 가져오기 (문자열 다루기) (0) | 2024.08.25 |
[프로그래머스] 제일 작은 수 제거하기 (0) | 2024.07.08 |
[프로그래머스] 나누어 떨어지는 숫자 배열 (0) | 2024.07.07 |
[프로그래머스] 없는 숫자 더하기 (0) | 2024.07.07 |