https://programmers.co.kr/learn/courses/30/lessons/12931
내가 푼방식:
접근
입력한 숫자의 각 자리수마다 더해야 하기때문에 split 을 이용하여 분리해야겠다고 생각이 들었고 분리 하기위해서는 number 형에서 string 타입으로 바꿔줘야하기때문에 toString을 쓰기로 생각했다. split을 사용하여 나눌때는 ''으로 한개의 문자열로 쪼개기위해 쓰기로 결정, 그리고 그것을 result 라는 숫자형 변수에 For of 를 사용하여 각자리수에 해당하는인덱스 값들을 더해주기로했다. 하지만 string 형에서 더하기를하면 숫자연산을 하는게 아닌 뒤로 push 하듯이 문자열만 추가되기 때문에 Number을 사용하여 각 문자열을 number 형식으로 바꿔주기로했다(parseInt()를 사용해도된다)
코드풀이
1줄. 입력값 n 을 인자로 받음
3줄. 입력된 숫자 n 을 문자열 형태로 나누기위해 toString 사용하고, split으로 나눠줌.
4줄. 합한 숫자를 담을 result 선언 및 초기화
5~6줄. for of 을 사용하여 number 변수 문자열에 들어있는 각각의 인덱스를 one 이라고 지정하고 number 가 가진 요소수 만큼 for 문을 돌려 number 형으로 바뀐 number 변수에 있던 임의의 one 을 result 에 더해주었다.
다른사람이 푼방식: split 사용하지않고 10을 % 사용하여 나눈 나머지값으로 계산.
10으로 나누고 나머지는 결국 우리가 원하는 각각 하나하나 원하던 한자리 수이기때문에, type casting 형변환 없이 순수하게 만들어줄수있어 참고하기위해 이렇게 가져왔다. do 라는 형태는 while 과 함께 쓰고 while 문들어가기전에 무조건 한번 실행하는 걸로 알고있다.
Math.floor 을 사용하여 소수점을 반내림하였고 그것을 n 에 담아주었다. 예를들어 123 이면 10으로 나누면 12.3이 되는데 반내림하여 12 가 되어 그것을 n에 넣어준것이다 그 윗줄에 이미 첫번째 자리숫값을 넣어주었기때문에 이런식으로 지운것이다. 그렇게 while문이 0보다 클때까지 진행한후 sum 으로 리턴해주었다.
'공부 > 알고리즘&자료구조' 카테고리의 다른 글
항해99 문제26번풀이 (제일 작은수 제거하기,프로그래머스) (0) | 2021.11.10 |
---|---|
항해99 문제24번풀이 (정수 내림차순으로 배치하기,프로그래머스) (0) | 2021.11.10 |
항해99 문제20번풀이 (완주하지 못한 선수,프로그래머스) (0) | 2021.11.10 |
항해99 문제18번풀이 (서울에서 김서방 찾기,프로그래머스) (0) | 2021.11.10 |
항해99 문제19번풀이 (수박수박수박수박수박수?,프로그래머스) (0) | 2021.11.10 |