일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 재귀적으로 생각하기
- display
- align-iitems
- 캡슐화 (encapsulation)
- Math.floor()
- justfiy-content
- string
- 조건문
- 문자열을 객체로 만드는법
- 재귀함수 탬플릿
- 첫번째 미니 프로잭트
- 객체지향 프로그래밍 특징
- Instanc
- 참조자료형
- 추상화 (abstraction)
- Promise Chaining
- flex-direction
- Promise all
- probs.children
- 화살표함수 기본 개념
- 클래스 문법 구조
- async/await
- class
- 얕은복사와 깊은 복사
- css 정리
- 상속 (inheritance)
- probs
- 다형성 (polymorphism)
- align-content
- props비구조화 할당
Archives
- Today
- Total
희락코딩
알고리즘 - 최후의 한자리 수를 리턴하기. 본문
728x90
반응형
문제
수를 입력받아 각 자릿수를 모두 곱한 결과물들이 한 자리 수가 될때까지 반복적으로 곱한 후 최후의 한자리 수를 리턴하기.
입출력 예시
1
2
|
let output = lastDigit(958);
console.log(output); // --> 0
|
cs |
수도코드 및 코드작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function lastDigit(num) {
// 숫자를 문자열 형태와 배열로 만들어준다.
let strNum = num.toString().split('')
// 한자리수를 리턴하기 위한 변수를 저장
// 배열길이가 1이하일떄까지 반복문을 돌린다
let count = 0
while(strNum.length > 1){ // 자리수가 한자리일때까지
strNum = strNum.reduce((acc,cur)=>Number(acc)*Number(cur),1) // 자리수 곱셈 작업
strNum = strNum.toString().split('') // 나온 결과물 배열 작업
count ++ // 한자리 될떄까지 증가
}
return Number(strNum[0])
}
|
cs |
문제 풀이
우선 배열 반복문을 돌리기 위해 숫자를 문자열 형태로 만들어 줌과 동시에 스플릿을 활용해 문자열로 바뀐 숫자를 배열에 담아 줍니다.
이제 이배열을 바탕으로 반복문을 만들어 줍니다. (for문 while문 둘중 편한걸로 하기)
자리수가 한자리일 때까지의 조건을 만들어 줍니다. while(strNum.length>1)
그리고 자리수 곱셈 작업을 하면 결과 값이 출력되고 그 결과 값을 다시 한자리가 될때까지 배열로 만들어 주는 실행문을 작성해줍니다.
이러한 작업이 반복이 되면 최종적으로 ['최종결과값'] 하나 가 나옵니다. 그래서 이배열을 반환 하기 위해
strNum[0] 을 반환하면 됩니다. 이를 숫자 형태로 반환하면 최종결과값이 배열형태가 아닌 숫자로 출력이 됩니다.
728x90
반응형
'프로그래밍 > 코드 문제 풀이' 카테고리의 다른 글
프로그래머스 1단계 - 짝수와 홀수 (0) | 2021.06.14 |
---|---|
알고리즘 - 각 단어의 개수 정보를 담은 객체 (2) | 2021.05.05 |
알고리즘 - 각 자릿수를 더한 값 리턴하기 (0) | 2021.05.05 |
mostFrequentCharacter (0) | 2021.04.25 |
countAllCharacters // 문자열을 객체로! (0) | 2021.04.25 |
Comments