[프로그래머스] 외계행성의 나이(Python)

수경·2023년 6월 5일
2

problem solving

목록 보기
154/174

프로그래머스 - 외계행성의 나이

풀이

a = 0
b = 1
c = 2
...
j = 9

로 변환해주면 되는 문제로 정말 간단하게 구현했다

당연하게 for문 돌리고 answer += 문자열 이런식으로 풀었는데 다른 사람이 한 줄로 제출한 것을 보고 약간 현타가 왔다.
리스트로 만들어서 join으로 문자열을 만드는 방식인데, 파이썬으로 가장 쉬운 방법이지만 항상 놓치는 방법이다.................................................................................................... 우럭..............................

return ''.join([chr(int(i)+97) for i in str(age)])

위 방법으로는 굳이 answer 변수를 만들지 않아도 되고, += 연산도 필요없다.. 한 줄로 간단히 풀 수 있다^^,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

심지어 replace() 함수를 사용해서도 할 수 있다.................... 말 그대로 변환이니까악......(대신 0부터 9까지 변환할 값을 모두 입력해줘야함)
^^....................................................

++) 충격
python str에 translate/maketrans 라는 함수가 있다.......
maketranse로 문자열 매핑 테이블을 만들고, translate함수가 매핑 테이블을 기반으로 문자열을 변환해줌.................. 충격

return str(age).translate(str.maketrans('0123456789', 'abcdefghij'))

코드

  1. 내 코드
def solution(age):
    answer = ''
    for i in str(age):
        answer += chr(int(i) + 97)
    return answer
  1. join() 활용
def solution(age):
	return ''.join([chr(int(i)+97) for i in str(age)])
  1. replace() 활용
def solution(age):
    age = str(age)
    age = age.replace("0", "a")
    age = age.replace("1", "b")
    age = age.replace("2", "c")
    age = age.replace("3", "d")
    age = age.replace("4", "e")
    age = age.replace("5", "f")
    age = age.replace("6", "g")
    age = age.replace("7", "h")
    age = age.replace("8", "i")
    age = age.replace("9", "j")
    return age
  1. maketrans() / translate() 활용
def solution(age):
    return str(age).translate(str.maketrans('0123456789', 'abcdefghij'))
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글