Javascript/문제 풀이

프로그래머스 7일차

아라라_ 2023. 5. 23. 23:11

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

Frederick Philips Brooks
Mythical Man-Month 저자
728x90

문자열 뒤집기

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

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

주어진 문자열 my_string을 거꾸로 뒤집어서 반환하는 함수인 solution을 구현한 것입니다. 아래는 코드의 동작 설명입니다.

var answer = '';: 결과를 저장할 빈 문자열 answer를 선언합니다.

answer = my_string.split('').reverse().join('');:

my_string.split(''): my_string을 각각의 문자로 분할하여 배열로 만듭니다. 예를 들어, 입력으로 "Hello"라는 문자열이 주어졌다면 ['H', 'e', 'l', 'l', 'o']와 같은 배열이 생성됩니다.
.reverse(): 배열의 순서를 뒤집습니다. 위의 예시 배열은 .reverse()를 적용하면 ['o', 'l', 'l', 'e', 'H']와 같이 됩니다.
.join(''): 배열의 각 요소를 하나의 문자열로 결합합니다. 위의 예시 배열은 .join('')을 적용하면 "olleH"라는 문자열이 됩니다. 이 문자열이 answer에 할당됩니다.
return answer;: 최종적으로 거꾸로 뒤집힌 문자열인 answer를 반환합니다.

 

 

직각삼각형 출력하기

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

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

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
}).on('close', function () {
    const num = Number(input[0]);
    let logStr = ''
    for(let i = 0 ; i < num; i++) {
        for(let j = 0 ; j <= i; j++) {
            logStr+='*'
        }
        logStr+='\n'
    }
    console.log(logStr)
});

const readline = require('readline');: readline 모듈을 사용하기 위해 require 함수를 사용하여 모듈을 불러옵니다.

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

readline 모듈의 createInterface 함수를 호출하여 입력과 출력을 담당하는 rl 인터페이스 객체를 생성합니다. 입력은 표준 입력(process.stdin)으로 설정하고, 출력은 표준 출력(process.stdout)으로 설정합니다.
let input = [];: 입력값을 저장할 빈 배열 input을 선언합니다.

rl.on('line', function (line) { input = line.split(' '); }): 한 줄씩 입력을 받을 때마다 실행되는 이벤트 핸들러를 등록합니다.

line은 입력된 한 줄의 문자열을 나타냅니다.
line.split(' '): 입력된 문자열을 공백을 기준으로 분할하여 배열로 만듭니다.
input = line.split(' ');: 분할된 배열을 input에 할당합니다.
.on('close', function () { ... }): 입력의 끝을 나타내는 이벤트 핸들러를 등록합니다. 입력이 종료되면 실행됩니다.

const num = Number(input[0]);: 분할된 입력 배열의 첫 번째 요소를 정수형으로 변환하여 num에 할당합니다.

let logStr = '': 결과를 저장할 빈 문자열 logStr을 선언합니다.

for(let i = 0 ; i < num; i++) { ... }: 0부터 num-1까지 반복하는 반복문을 실행합니다. i는 현재 줄의 번호를 나타냅니다.

for(let j = 0 ; j <= i; j++) { logStr+='*' }: 0부터 i까지 반복하는 반복문을 실행합니다. j는 현재 줄에서 출력할 *의 개수를 나타냅니다. 각 줄마다 *을 logStr에 추가합니다.

logStr+='\n': 각 줄마다 *을 모두 추가한 뒤에 줄바꿈 문자(\n)를 logStr에 추가합니다.

console.log(logStr): 최종적으로 완성된 logStr을 출력합니다.


짝수 홀수 개수

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

function solution(num_list) {
  // 객체 만들기
  const obj = { 'even': 0, 'odd': 0}
    // 배열 순회하면서 객체에 넣기
    // 짝수인 경우에는 key가 odd로
    // 홀수인 경우에는 key가 even으로
  for (let i = 0; i < num_list.length; i++) {
    if (num_list[i] % 2 === 1) {
      obj['odd'] += 1
    } else {
      obj['even'] += 1
    }
  }
  
  return [obj['even'], obj['odd']]
}

주어진 정수가 담긴 리스트 num_list에서 짝수와 홀수의 개수를 세어 배열로 반환하는 함수인 solution을 구현한 것입니다. 아래는 코드의 동작 설명입니다.

const obj = { 'even': 0, 'odd': 0}: 짝수와 홀수의 개수를 저장할 객체 obj를 생성합니다. 초기값으로 even과 odd라는 속성을 가지며, 각각의 값은 0으로 설정됩니다.

for (let i = 0; i < num_list.length; i++) { ... }: num_list 배열을 순회하는 반복문을 실행합니다. i는 현재 요소의 인덱스를 나타냅니다.

if (num_list[i] % 2 === 1) { obj['odd'] += 1 } else { obj['even'] += 1 }: 현재 요소인 num_list[i]가 홀수인지 짝수인지를 판별합니다. 홀수인 경우 obj['odd'] 값을 1 증가시키고, 짝수인 경우 obj['even'] 값을 1 증가시킵니다.

return [obj['even'], obj['odd']]: 최종적으로 짝수의 개수와 홀수의 개수를 담은 배열을 반환합니다. obj['even']은 짝수의 개수를 나타내며, obj['odd']는 홀수의 개수를 나타냅니다.

 

 

문자 반복 출력하기

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

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

주어진 문자열 my_string의 각 문자를 n번 반복하여 새로운 문자열을 생성하는 함수인 solution을 구현한 것입니다. 아래는 코드의 동작 설명입니다.

var answer = '';: 결과를 저장할 빈 문자열 answer를 선언합니다.

for(let i=0; i<my_string.length; i++){ ... }: my_string의 각 문자에 대해 반복하는 반복문을 실행합니다. i는 현재 문자의 인덱스를 나타냅니다.

answer += my_string[i].repeat(n): 현재 문자 my_string[i]를 n번 반복한 문자열을 생성하여 answer에 추가합니다. repeat(n) 메서드는 문자열을 n번 반복하여 새로운 문자열을 생성합니다.

return answer: 최종적으로 생성된 문자열 answer를 반환합니다.