[프로그래머스] 자연수 뒤집어 배열로 만들기
문제가 너무 쉬워서 너무 행복해요.😍
이번 문제는 [프로그래머스] 자릿수 더하기와 유사하고 더 쉬운 버전인 것 같아요.
https://development-piece.tistory.com/31
[프로그래머스] 자릿수 더하기
역시 프로그래머스 Level 1에서 3page라 그런지 문제가 쉽네요. 이번 문제 빠르게 풀고 넘겼습니다. 해결방안 function solution(n) { return `${n}`.split('').map(n => n/1).reduce((acc, cur)=> acc + cur); }..
development-piece.tistory.com
해결방안
function solution(n) {
return `${n}`.split('').map(n => n/1).reverse();
}
해결방안 순서
- 숫자 n을 문자열로 바꿔주기 : `${n}`
- 문자열로 바꾼 숫자 n을 각 자릿수를 나누어 배열로 만들기 : split('')
- n을 각 자리수가 문자로 되어 있는걸 숫자로 바꾸기 : map(n => n/1)
- 배열을 역순으로 바꾸기 : reverse()
테스트 1에서 "12345 -> [5,4,3,2,1]"로 바꾸기 위해서
"12345 -> [1, 2, 3, 4, 5]"로부터 바꾸어야 됩니다.
[1, 2, 3, 4, 5]로 바꾸기 위해서는 자바스크립트로 돌고 돌아서 바꾸어야 됩니다.
3단계 까지가 그에 대한 설명 입니다.
1단계. 숫자 n을 문자열로 바꿔주기 : `${n}`
숫자에서는 split()메서드를 쓰면 오류가 나기 때문에 문자열로 바꾸어 주어야 됩니다.
그래서 저는 간단하게 "템플릿 리터럴"를 사용해서 바꾸어 주었습니다.
템플릿 리터럴 ("template strings" (템플릿 문자열))
- ES6부터 새로 도입된 문자열 표기법입니다.
- 문자열 생성 시 따옴표 대신, 백틱(`)을 사용합니다.
- ${ } 사이에 변수나 연산 등을 삽입할 수 있습니다.
테스트 1 (n = 12345)
`${n}` -> '12345'
2단계. 문자열로 바꾼 숫자 n을 각 자릿수를 나누어 배열로 만들기 : split('')
split()메서드를 사용하여 각 자릿수를 나누어 배열로 만들어 주었습니다.
MDN Web Docs
split() 메서드는 String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눕니다.
구문 : str.split([separator[, limit]])
- separator Optional
원본 문자열을 끊어야 할 부분을 나타내는 문자열을 나타냅니다. 실제 문자열이나 정규표현식을 받을 수 있습니다. 문자열 유형의 separator가 두 글자 이상일 경우 그 부분 문자열 전체가 일치해야 끊어집니다. separator가 생략되거나 str에 등장하지 않을 경우, 반환되는 배열은 원본 문자열을 유일한 원소로 가집니다. separator가 빈 문자열일 경우 str의 각각의 문자가 배열의 원소 하나씩으로 변환됩니다. - limit Optional
끊어진 문자열의 최대 개수를 나타내는 정수입니다. 이 매개변수를 전달하면 split() 메서드는 주어진 separator가 등장할 때마다 문자열을 끊지만 배열의 원소가 limit개가 되면 멈춥니다. 지정된 한계에 도달하기 전에 문자열의 끝까지 탐색했을 경우 limit개 미만의 원소가 있을 수도 있습니다. 남은 문자열은 새로운 배열에 포함되지 않습니다.
// split 예제
var myString = 'Hello World. How are you doing?';
var splits = myString.split(' ', 3);
console.log(splits); //["Hello", "World.", "How"]
// limit를 안 쓸 경우
let mystring = 'Hello';
console.log(mystring.split('')); // [ 'H', 'e', 'l', 'l', 'o' ]
테스트 1 (n = 12345)
`${n}` -> '12345'
`${n}`.split('') -> ['1', '2', '3', '4', '5']
3단계. n을 각 자릿수가 문자로 되어 있는걸 숫자로 바꾸기 : map(n => n/1)
배열을 역순으로 바꾸어 주기 전에 배열 안에 있는 문자열을 숫자로 바꾸어 주어야 됩니다.
새로운 배열을 반환할 때는 map()메서드를 쓰면 쉽게 바꿀 수 있습니다.
MDN Web Docs
map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
구문 : arr.map(callback(currentValue[, index[, array]])[, thisArg])
- callback : 새로운 배열 요소를 생성하는 함수. 다음 세 가지 인수를 가집니다.
- currentValue : 처리할 현재 요소.
- index Optional : 처리할 현재 요소의 인덱스.
- array Optional : map()을 호출한 배열.
- thisArg Optional : callback을 실행할 때 this로 사용되는 값.
// map()메서드 예제
const array1 = [1, 4, 9, 16];
const map1 = array1.map(x => x * 2);
console.log(map1); // map1 = [2, 8, 18, 32]
문자열을 숫자로 바꾸어 줘야 하는데
저는 다양한 메소드가 있겠지만 간단하게 "문자열과 숫자열의 사칙연산"으로 숫자를 구해주었습니다.
[프로그래머스] 문자열을 정수로 바꾸기에 다른 사람 풀이 보기에서 알게 된 건데요.
https://development-piece.tistory.com/26
[프로그래머스] 문자열을 정수로 바꾸기
이번 문제도 쉬운 편이라 빨리 풀었습니다. 해결방안 function solution(s) { return parseInt(s); return Number(s); } 이번 문제는 문자열을 정수로 바꾸는 문제입니다. 문자열을 정수로 바꾸는 대표적인 방법..
development-piece.tistory.com
문자열과 숫자열의 사칙연산은 숫자가 나오게 됩니다.
- 5/1 = 5
이점을 활용해서 map() 메서드를 사용해 새로운 배열을 반환하게(문자열을 숫자로) 만들어 주었습니다.
테스트 1 (n = 12345)
`${n}` -> '12345'
`${n}`.split('') -> ['1', '2', '3', '4', '5']
`${n}`.split('').map(n => n/1) -> [1, 2, 3, 4, 5]
4단계. 배열을 역순으로 바꾸기 : reverse()
마지막으로 우리가 원하는 값은 테스트 1에서 [1, 2, 3, 4, 5,]가 아닌 [5, 4, 3, 2, 1]를 구해야 됩니다.
배열의 순서를 반전시킬 때는 reverse()메서드를 사용하면 쉽게 바꿀 수 있습니다.
MDN Web Docs
reverse() 메서드는 배열의 순서를 반전합니다. 첫 번째 요소는 마지막 요소가 되며 마지막 요소는 첫 번째 요소가 됩니다.
구문 : a.reverse()
const array1 = ['one', 'two', 'three'];
console.log('array1:', array1); // ["one", "two", "three"]
const reversed = array1.reverse();
console.log('reversed:', reversed); // ["three", "two", "one"]
console.log('array1:', array1); // ["three", "two", "one"]
테스트 1 (n = 12345)
`${n}` -> '12345'
`${n}`.split('') -> ['1', '2', '3', '4', '5']
`${n}`.split('').map(n => n/1) -> [1, 2, 3, 4, 5]
`${n}`.split('').map(n => n/1).reverse() -> [5, 4, 3, 2, 1]
여기까지 프로그래머스 자연수 뒤집어 배열로 만들기 해결방안에 대해 설명해보았습니다.