배꼽파지 않도록 잘 개발해요

[프로그래머스] 입문 Day 6 문자열, 반복문, 출력, 배열, 조건문 (Javascript) 본문

코딩테스트/프로그래머스

[프로그래머스] 입문 Day 6 문자열, 반복문, 출력, 배열, 조건문 (Javascript)

꼽파 2023. 12. 15. 15:21


문자열 뒤집기

문제 설명

  • 문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000

입출력 예

my_string return
"jaron" "noraj"
"bread" "daerb"

 

풀이 1

반복문을 사용한 문자열 역순 생성

function solution(my_string) {
    var answer = "";
    for (i = my_string.length-1; i >= 0; i--) {
        answer += my_string[i]
    }
    return answer;
}

 

풀이 2

Spread 연산자와 배열의 역순 및 문자열로 변환

function solution(my_string) {
    var answer = [...my_string].reverse().join("");
    return answer;
}
my_string = "jaron"

answer = [...my_string]  // 문자열이 1개씩 있는 배열  
// console.log(answer)  // [ 'j', 'a', 'r', 'o', 'n' ]

 

 

풀이 3

split, reverse, join 메서드를 사용

function solution(my_string) {
    return my_string.split('').reverse().join('');
}

 

주의할 점

  • 풀이 2, 3이 깔끔하다. 아직 배열을 제대로 다루지 못해서 반복문으로 풀었다.
  • 모던 자바스크립트에 익숙해지는 것이 필요할 것 같다.

직각삼각형 출력하기

문제 설명

  • "*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.

제한사항

  • 1 ≤ n ≤ 10

입출력 예

입력 출력
3 *
**
***

 

풀이 1

for문으로 input의 숫자만큼의 삼각형을 출력

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

// 사용자의 입력을 받아서 input 배열에 저장
rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    
    // 입력된 숫자만큼 반복하면서 삼각형 출력
    for (i = 1; i <= input; i++) {
        console.log("*".repeat(i))
    }
});

 

주의할 점

반복문 작성할 때 console.log가 반복문 안에 있으면 한 줄씩 띄어서 출력됨.

console.log('Line 1', 'Line 2'); // Line 1 Line 2

console.log('Line 1');
console.log('Line 2');
// Line 1
// Line 2

console.log('Line 1');console.log('Line 2');
// Line 1
// Line 2

짝수 홀수 개수

문제 설명

  • 정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 1 ≤ num_list의 길이 ≤ 100
  • 0 ≤ num_list의 원소 ≤ 1,000

입출력 예

num_list  result
[1, 2, 3, 4, 5]  [2, 3]
[1, 3, 5, 7] [0, 4]

 

풀이 1

filter 매서드 사용

function solution(num_list) {
  return [
    num_list.filter((num) => num % 2 === 0).length,
    num_list.filter((num) => num % 2 === 1).length,
  ];
}

 filter 함수는 배열의 각 요소에 대해 주어진 조건을 만족하는 요소들로 이루어진 새로운 배열을 생성

 

풀이 2

반복문으로 짝수와 홀수의 개수를 세어서 배열에 넣기

function solution(num_list) {
    var answer = [0, 0];
	
    // a가 짝수이면 0, 홀수이면 1
    for (let a of num_list){
        answer[a % 2] += 1
    }

    return answer;
}

문자 반복 출력하기

문제 설명

  • 문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 2 ≤ my_string 길이 ≤ 5
  • 2 ≤ n ≤ 10
  • "my_string"은 영어 대소문자로 이루어져 있습니다.

입출력 예

my_string n result
"hello" "hhheeellllllooo"

 

풀이 1

배열을 만들고 각 문자에 대해 repeat 매서드 사용

function solution(my_string, n) {
    var answer = [...my_string].map(v => v.repeat(n)).join("");
    return answer;
}

[...my_string]은 스프레드 연산자를 사용하여 문자열을 배열로 변환 →  ['h', 'e', 'l', 'l', 'o']와 같은 배열이 생성
map 함수는 배열의 각 요소에 대해 주어진 함수를 호출하고, 그 결과를 가지고 새로운 배열을 생성
화살표 함수 v => v.repeat(n)는 각 문자(v)를 주어진 횟수(n)만큼 반복하는 문자열을 반환

 

풀이 2

for of 반복문

function solution(my_string, n) {
    var answer = '';
    for (i = 0; i < my_string.length; i++) {
        answer += my_string[i].repeat(n)
    }
    return answer;
}
728x90