2023/06/01
프로그래머스 자바스크립트/레벨1/문제 리뷰
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
const upperString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const lowerString = "abcdefghijklmnopqrstuvwxyz";
function solution(s, n) {
return s.split('').map(char => {
if (char === ' ') return char;
const str = char === char.toUpperCase() ? upperString : lowerString;
let index = str.indexOf(char) + n;
if (index >= str.length) index -= str.length;
return str[index];
}).join('');
}
split('')를 이용하여 문자열을 배열로 변환합니다. 이 배열은 각 문자가 배열의 요소로 구성됩니다.
map 메서드를 이용하여 배열의 각 요소에 대해 다음의 연산을 수행합니다:
join('')을 이용하여 배열을 다시 문자열로 변환합니다.
이렇게 작성된 solution 함수는 주어진 문자열 s를 n만큼 시저 암호화한 결과를 반환합니다.
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
function solution(n) {
return Array.from({length: n}, (_, i) => i % 2 === 0 ? '수' : '박').join('');
}
function solution(n) {
return "수박".repeat(n/2)+(n%2 === 1 ? "수" : "")
}
Array.from({length: n})를 통해 길이가 n인 새로운 배열을 생성합니다. 이 배열의 각 요소는 undefined입니다.
map 메서드를 사용하여 배열의 각 요소에 대해 다음의 연산을 수행합니다:
join('')을 이용하여 배열을 다시 문자열로 변환합니다. 이렇게 하면 "수박수박수박..." 패턴을 유지하면서 주어진 길이 n에 맞는 문자열이 반환됩니다.
Array.from 매시드에 대한 이해
Array.from
메서드는 배열 형태의 객체나 반복 가능한 객체를 얕게 복사하여 새로운 Array
객체를 만듭니다. 이 메서드는 두 개의 선택적 인수를 가집니다:
mapFn
: 모든 배열 요소에 대해 호출할 맵 함수입니다. 이 함수는 생성된 배열의 각 요소에 대해 호출되며, 각 요소의 값을 변환하는 데 사용할 수 있습니다.thisArg
: mapFn
을 실행할 때 this
로 사용할 값입니다.기본 사용 방법
Array.from('foo');
// ["f", "o", "o"]
문자열을 배열로 변환하는데 유용하게 사용할 수 있습니다
mapFn
인자를 사용하는 방법
Array.from([1, 2, 3], x => x + x);
// [2, 4, 6]
위 코드에서는 Array.from 메서드를 이용해 기존 배열 [1, 2, 3]의 각 요소를 두 배로 만드는 새 배열을 생성합니다.
배열 형태의 객체를 배열로 변환하는 방법
const obj = { 0: 'a', 1: 'b', 2: 'c', length: 3};
Array.from(obj);
// ["a", "b", "c"]
위 코드에서는 length 프로퍼티를 가지는 객체를 배열로 변환하고 있습니다. 이렇게 Array.from 메서드는 배열이 아닌 객체나 집합을 배열로 변환하는 데 유용하게 사용될 수 있습니다.
특정 길이의 배열 생성 방법
Array.from({length: 5}, (_, i) => i);
// [0, 1, 2, 3, 4]
이 코드는 길이가 5이며 각 요소가 그 인덱스 값과 동일한 배열을 생성합니다.
Array.from 메서드는 이와 같은 다양한 경우에 유용하게 사용할 수 있습니다.
여기에서 _
는 매개변수 위치에는 있지만 실제로는 사용되지 않는 매개변수를 의미합니다. 이러한 경우 보통 _ 기호를 사용해 "이 매개변수는 여기에는 있지만, 실제로는 사용되지 않는다"라는 것을 명확히 표시합니다.