2020.09.01_자릿수 더하기_알고리즘_정리 노트_
오늘은 자릿수 더하기 알고리즘! 쉽고 간단하지만, 중요한 개념들이 많이 들어있고 개인적으로 다른 사람 풀이들이 너무 신박해 포스팅으로 남겨보기 !
음.. 간단하게 for문으로 하나씩 빼서 더해버리면 안되나? 라고 생각하겠지만, for문은 반복가능한 객체만 넣을 수 있기 때문에 대표적으로 리스트, 튜플, 문자,range() 등등이 있다. 하지만 숫자는 반복이 불가능하기 때문에 for문에 넣을 수 없다!
그렇다면 ? - 숫자를 문자로 바꿔서 분리해주고, 분리한 다음 다시 숫자로 바꿔서 더해주자!
나의 답!
먼저 n 을 문자열로 변환시켜주기 위해 str 이라는 것을 썼다. str은 문자열로, int 는 정수열로 바꿔준다.
여기서 찾으면서 본 개념 정리!
문자열을 만드는 함수 str, repr 차이
str
란 문자열로 변환을 하는 기능을 가지는 데, 만약에
a = 12.3456789
print(str(a))
출력값 >>>>>> 12.345
이렇게 조금 정리해서 출력을 해준다. 문자열로 변환은 되었지만, 조금 정리된 느낌이다.
만약 그 자체를 들고오고 싶거나, 완벽한 문자열을 만들고 싶다면?
그 때 써주는 것이 바로 repr 함수이다.
repr
란 str 과 같이 같은 문자열로 변환해주는 함수지만, 완벽한 문자열로 변환을 해줄 수 있다.
a = 12.3456789
print(repr(a))
출력값 >>>>>> "12.3456789"
이렇게 repr 은 따옴표와 함께 전체를 문자열로 변환해준다. repr 의 장점은, 객체를 똑같이 저장해줌으로써 재사용성이 용이해진다. 그에 비해 str 은 만약 복잡한 숫자가 있다면, 그대로를 반환하지 못하기 때문에 repr 보다 정확성이 떨어진다.
하지만 vs 코드에서는 어찌 된 것인지 똑같이.. 출력해주더라 엥엥
ㅋㅋㅋㅋㅋㅋㅋㅋㅋ그래서 일단 범용적으로 많이 쓰는 str을 쓰다가 혹시 뭔가가 이상하다면 repr 도 써보는 거 추천! 파이썬 버전마다 str 가 출력하는 값이 달라진다 카더라.
int
는 문자열을 숫자로 바꿔주는 함수라고 기억하지만, 정확히 말하면 정수로 바꿔주는 역할을 한다. 그래서
a = 12.3456789
print(int(a))
출력값 >>>>>> 12
이렇게 a 를 프린트 해주었을 때, 소수점을 제외하고 12만 출력해준다. 보통 type 메소드와 함께 많이 쓰인다. ( 소수점까지 다 출력하는 숫자 타입은 float 다. 이고는 나중에 좀 더 자세히 포스팅 해보게씀 ㅎㅁㅎ )
자세히 들어가서 그렇지 그냥 문자열 쓰고 싶을때는 str, ( 리스트는 join - 완주하지 못한 선수 포스팅 때 다뤘음. 기억하려고 나혼자 주절주절 ㅎㅁㅎ ) 숫자열 쓰고 싶을 때는 int 를 쓰면 된다!
자 이제 다시 코드 정리로 돌아와서,
그렇게 n을 str 로 변환을 시키고 for문을 돌려준다. 그러면 하나하나 분리가 되고 "1", "2" ,"3" 이렇게 분리가 될 것 이다. 그러면 우리는 ? 다시 int 를 사용해서 1,2,3 을 리스트에 다가 담아준다.
그러면 answer = [ 1, 2, 3 ] 이라는 리스트가 완성 되었다. 그러면 우리는 리스트 안 요소들을 더해줄 때는 뭘 쓴다고 했었지!!!!!! sum 이라는 것을 써주면 되는거다. ( 이거는 알고리즘 예산에 적어 놓았는데, 뭐 대단한 기능은 아니라 따로 링크는 안걸어 두게씀. )
그러면 리스트 안 숫자들을 더해준 결과들을 리턴하는 것이다 ! 짝짝 숫자가 반복되는 객체가 아니기 때문에 파이썬에서는 이렇게 변환하는 풀이가 필요했다!
그럼 다른 사람들의 풀이를 볼까나!
다른 분의 풀이는 List Comprehension 으로 풀어서 한줄로 간단하게 표현했다.
list Comprehension
는 지정된 표현식에 따라 새로운 리스트 컬렉션을 빌드하는 기능이다!
형태는
[ 출력하는 값의 식 for 요소 in 범위 if 조건식 ] 을 쓰며, 이렇게 쓰면 간단하게 한줄로 적어 줄 수 있는 것이다!
파이썬 3부터는 dictionary 와 set 도 comprehension 으로 써줄 수 가 있다.
간단하게 형태만 짚고 넘어갈까?
Dictionary Comprehension
{ Key:Value for 요소 in 범위 if 조건식 }
Set Comprehension
{ 출력하는 값의 식 for 요소 in 범위 if 조건식 }
워.. 역시 공부하면서 새로운 것을 많이 발견하는 것 같다. 이렇게 한 줄로 간단히 표현하는 방법도 있구나.. 라는 것도 배우며 오늘 알고리즘 포스팅 끝!
'python' 카테고리의 다른 글
2022.05.11 python 윤년 계산기 (0) | 2022.05.11 |
---|---|
2020.09.03_알고리즘_자연수 뒤집어 배열로 만들기 (0) | 2020.09.03 |
2020.08.29_알고리즘_모의고사 (0) | 2020.08.29 |
2020.08.26_알고리즘_완주하지 못한 선수 (4) | 2020.08.27 |
2020.08.24_알고리즘_문자열 다루기 기본 (0) | 2020.08.25 |
댓글