TIL. 간지나는 코드로 알고리즘 풀기(feat.삼항연산자)

Kim Chioh·2021년 1월 28일
0

알고리즘

목록 보기
1/2
post-thumbnail

오늘은 좀 재미없으니 스킵하셔도 무방합니다. ㅎㅎ 문제풀이거든요~
근데, 갈때 가시더라도 제 간지나는 코드 한줄은 보고 가실래요? (=맨 아래에있으니 다 읽어달라는 말)

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.

num: 숫자

return: true or false (뒤집은 모양이 num와 똑같은지 여부)

예를 들어,

num = 123
return false
=> 뒤집은 모양이 321 이기 때문

num = 1221
return true
=> 뒤집은 모양이 1221 이기 때문

num = -121
return false
=> 뒤집은 모양이 121- 이기 때문

num = 10
return false
=> 뒤집은 모양이 01 이기 때문


여기까지 문제입니다.

저의 접근은,
1. num은 int 로 주어지기 때문에 우선 뒤집는 것이 불가능합니다. 따라서 뒤집으려면 순서가 있는 자료구조형태로 변환하는데 list나 str이 이에 적합합니다.
list로 바꾸려면 str로 변환 후 list로 바꿔줘야하기때문에, 두번 할 필요없이 str에서 해결해보려 합니다.
2. 실제로 뒤집을 필요없이 뒤집은 모양과 비교만 해주면 되기때문에 뒤에서부터 순서대로 주르륵 소환하는 모양인 [::-1]형태로 반환하여 원래의 값과 같은지 비교를 하려합니다.
3. if문을 써서 할텐데 조금 짧은 형태인 한줄로 써보려합니다.(삼항연산자)
삼한연산자의 활용 : 참인경우 값 if 조건 else 거짓인경우 값

def same_reverse(num):
'''
틀린코드
numbers = list(str(num)).split(',')
if numbers == numbers.reverse():
return True
else:
return False
'''
틀린이유 : 리스트는 reverse()를 할경우 아예 주소도 같이 바뀐다. 따라서 비교를 하려면 다른 리스트에 할당하고 진행하는 것이 좋다.

맞는 코드
return 1 if str(num)[::-1] == str(num) else 0

맞는 이유 : str 자체에 함수를 추가하지 않고, 거꾸로 세는 방법을 정했다.
그리고 리스트로 굳이 바꿀필요없이 string 으로 변환 후 거꾸로부터 세는 방법을 선택했다.

오늘의 팁:
한줄로 쓰는 if 문은 간지 그.자.체.
게다가 True를 1로 쓰고 False를 0로 썻다고?.....하 간지난다 진짜;;(죄송합니다 제가 요즘 수면부족이라ㅋㅋㅋㅋ여기까지하겠습니다)

profile
Just do what to do

4개의 댓글

comment-user-thumbnail
2021년 1월 28일

잘 보고 갑니다~

1개의 답글
comment-user-thumbnail
2021년 1월 29일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ간지난다는 말 확 와닿아요 넘 웃기네요... 잘 보고가요 치오님

1개의 답글