
오늘의 알고리즘 코드카타는 특정 패턴을 유지하여 문자열을 리턴하는 함수를 만드는 문제였다.
어제의 회고를 생각하며 삼항연산자를 활용해 문제를 풀었는데 .... 🧐
이번 문제에서는 삼항연산자보다는 repeat() 메소드를 활용하는 것이 성능과 가독성 측면에서 좋다고 한다.. 😅 삼항연산자에 매몰되지 않고 풀어봤으면 다양한 생각을 해봤을 것 같다는 마음도 있지만 그래도 써봤다는 사실에 의의를 두기로 하고, 더 나은 방향을 고민했다는 것에 스스로를 칭찬해주자,,
string.repeat(count)
count : 반복 횟수를 나타내는 양의 정수count는 0 이상이어야 하며, 실수인 경우 소수점 아래는 버려짐count가 0 이면 빈 문자열을 반환count가 음수이거나 무한대(Infinity)이면 RangeError가 발생count만큼 반복한 새로운 문자열을 반환1. 기본 사용법
console.log("abc".repeat(3)); // "abcabcabc"
console.log("수박".repeat(2)); // "수박수박"
console.log("hello".repeat(0)); // ""
2. 실수나 음수를 넣었을 때
console.log("abc".repeat(2.5)); // "abcabc" (소수점 아래는 버려짐)
console.log("abc".repeat(-1)); // RangeError: Invalid count value
1. 특정 패턴 문자열 생성
: "수박수박..." 처럼 일정한 패턴을 가진 문자열을 만들 때 유용
function solution(n) {
return "수박".repeat(Math.ceil(n / 2)).slice(0, n);
}
console.log(solution(5)); // "수박수박수"
2. 구분자 반복
: 구분자를 반복해서 특정 문자열을 생성
console.log("-".repeat(10)); // "----------"
console.log("=".repeat(5)); // "====="
3. 공백 채우기
let indent = " ".repeat(4); // 4칸 공백
console.log(indent + "Indented Text"); // " Indented Text"
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
- 제한 사항 : n은 길이 10,000이하인 자연수입니다.
- 입출력 예
: "3" > return "수박수"
: "4" > return "수박수박"
function solution(n) {
let words = "";
for(let i = 0; i < n; i++){
i % 2 === 0 ? words += "수" : words += "박"
}
return words;
}
function solution(n) {
let words = "";
for (let i = 0; i < n; i++) {
words += i % 2 === 0 ? "수" : "박";
}
return words;
}
: 복합 할당 연산자를 앞으로 뺄 생각을 왜 못했을까? 모르니까 못했겠지. . 아무래도 내가 작성한 코드보다는 가독성도 좋고 깔끔한 것 같다. 다음에 꼭 활용해볼 것 👀
function solution(n) {
return "수박".repeat(Math.ceil(n / 2)).slice(0, n);
}
"수박""수박"을 여러 번 반복하여 원하는 패턴을 만들 것.repeat(Math.ceil(n / 2))repeat(count) 문자열을 count만큼 반복하여 새로운 문자열을 생성Math.ceil(n / 2) :n / 2는 n을 2로 나눈 값Math.ceil()은 소수점이 있는 경우 올림하여 정수로 만듦n=5라면 5 / 2 = 2.5 → Math.ceil(2.5) = 3n=4라면 4 / 2 = 2 → Math.ceil(2) = 2"수박"을 필요한 만큼 반복하여 최소한 n 이상의 길이를 가진 문자열을 만듦n=5라면 "수박수박수박"이 생성됨.slice(0, n)slice(start, end) : 문자열의 start부터 end 바로 앞까지의 부분 문자열을 반환start는 0이고, end는 n 이므로 문자열의 처음부터 n 길이만큼 잘라냄"수박"이 반복된 문자열에서 정확히 n 길이만큼만 남기기 위해 사용됨"수박수박수박".slice(0, 5) → "수박수박수"입력값
n에 따라"수박"을 필요한 만큼 반복(repeat())한 뒤, 정확히n만큼 잘라내는(slice()) 구조!