고양이와 코딩

[프로그래머스] 10월31일 ~ 11월6일 본문

javascript

[프로그래머스] 10월31일 ~ 11월6일

ovovvvvv 2023. 10. 31. 23:09
728x90

10월 31일

flag에 따라 다른 값 반환하기

 

내 풀이

function solution(a, b, flag) {
    const result = (flag) => (flag == true ? a + b :  a - b);
    return result(flag);
}

삼항연산자를 사용했다.

 

 

0떼기

 

내 풀이

function solution(n_str) {
    for (let i = 0; i < n_str.length; i++) {
        if (n_str[i] !== '0') {
            return n_str.substring(i);
        }
    }
}

n_str을 순회하면서 0이 아닌 첫 번째 문자를 찾으면 substring() 메서드로 해당 i문자열에서부터 끝까지를 추출한다 ~

 

남의 코드

const solution = (str) => String(Number(str))

오오.. ㅁㅊ.. 숫자로 변환한 뒤 다시 문자열로 바꾸면.. 0010이라는 숫자는 없으니..

앞의 0들이 다 사라지고 반환된다.. 오 ..ㅁㅊ!!

 

 

11월 01일

공배수

 

내 풀이

function solution(number, n, m) {
    return number % n === 0 && number % m === 0 ? 1 : 0
}

 

카운트업

 

내 풀이

function solution(start_num, end_num) {
    var answer = [];
    
    for (let i = start_num; i < end_num + 1; i++){
        answer.push(i);
    }
    return answer;
}

 

 

홀짝에 따라 다른 값 반환하기

 

내 풀이

function solution(n) {
    var answer = 0;
    var result = [];
    
    if (n % 2 !== 0){
        for (let i = 1; i < n + 1; i++) {
            if (i % 2 !== 0){
                answer += i;
            }
        }
    } else {
        for (let i = 1; i < n + 1; i++){
            if (i % 2 === 0){
                result.push(i * i);
            }
        }
        for (let j = 0; j < result.length; j++) {
            answer += result[j];
        }
    }
    return answer;
}

 

 

문자열을 정수로 변환하기

 

내 풀이

function solution(n_str) {
   return Number(n_str);
}

 

 

11월 02일

정수찾기

 

내 풀이

function solution(num_list, n) {
    var answer = 0;
    
    for (let i = 0; i < num_list.length; i++){
        if ( num_list[i] === n ){
            return 1;
        }
        }
    return 0;
}

 

 

n의 배수

 

내 풀이

function solution(num, n) {
    return num % n === 0 ? 1 : 0
}

 

 

my_string

 

내 풀이

function solution(rny_string) {
    const char_rny = rny_string.split('');
    
    for (let i = 0; i < char_rny.length; i++){
        if (char_rny[i] == "m") {
            char_rny[i] = "rn";
        }
    }
    var answer = char_rny.join('');
    
    return answer;
}

 

처음에는 char_rny를 replace()로 사용하려고 했다가, 그냥 간단히 rn으로 바꿔주는걸로 해결했다 ㅎㅎ

 

소문자로 바꾸기

 

내 풀이

function solution(myString) {
    return myString.toLowerCase();
}

소문자로 바꿔주는 toLowerCase() 메서드 사용!

 

 

11월 05일

대소문자 바꿔서 출력하기

 

내 풀이

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

let input = [];

rl.on('line', function (line) {
    input = [line];
}).on('close',function(){
    str = input[0];
    switchStr = [];
    
    for (let i = 0; i < str.length; i++){
        if (str[i] === str[i].toUpperCase()){
            switchStr.push(str[i].toLowerCase());
        } else if (str[i] === str[i].toLowerCase()){
            switchStr.push(str[i].toUpperCase())
        }
    }
    const result = switchStr.join('');
    console.log(result);
  
});

대문자 -> 소문자, 소문자 -> 대문자로 변환하는 문제!
바뀐 문자를 저장할 배열을 만들고 반복문 안에 조건문을 넣어서 대문자면 소문자로, 소문자면 대문자로 바꿔서 배열에 넣은다음
join('')으로 문자열로 합쳐준다 ㅎㅎ

 

특수문자 출력하기

 

내 풀이

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

rl.on('close', function () {
    console.log("!@#$%^&*(\\\'\"<>?:;");
});

이스케이프 시퀀스 사용 ㅎㅎ!!

눈 아프다

 

덧셈식 출력하기

 

내 풀이

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 num1 = Number(input[0]);
    const num2 = Number(input[1]);
    const sum = num1 + num2;
    console.log(`${num1} + ${num2} = ${sum}`);
});

문자열로 입력되어있는 input을 숫자로 변환하고 템플릿 리터럴로 대체한다 ㅎㅎ!!
그리고 Number을 쓰면 소수점일 경우 그대로 소수점까지 반환되므로 만약 정수로 변환하고 싶다면
parseInt() 함수를 쓰면 된다.

 

문자열 붙여서 출력하기

 

내 풀이

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 () {
    str1 = input[0];
    str2 = input[1];
    sumStr = str1 + str2;
    console.log(`${sumStr}`);
});

 

 

 

11월 06일

문자열 돌리기

 

내 풀이

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

let input = [];

rl.on('line', function (line) {
    input = [line];
}).on('close',function(){
    str = input[0];
    let result = '';
    for (let i = 0; i < str.length; i++){
        result += str[i] + '\n';
    }
    console.log(result);
});

result 라는 변수를 만들어서 str[i]하나하나에 개행문자를 더해준다.
요새 화가 많아져서 이런 문제를 보면 90도로 돌리기는 무슨,, 그냥 줄바꾸는거지.. 
괜히 헷갈리게 말하네 ㅡㅡ 이럼서화냄 ㅎㅎ

 

홀짝 구분하기

 

내 풀이

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 () {
    n = Number(input[0]);
    const result = (n % 2 == 0 ? `${n} is even` : `${n} is odd`);
    console.log(result);
});

삼항연산자 사용, 템플릿 리터럴은 ``로 감싸주기!!

 

문자열 겹쳐쓰기

 

내 풀이

function solution(my_string, overwrite_string, s) {
    var result = '';
    const firstPart = my_string.substring(0, s) + overwrite_string;
    const remainingPart = my_string.substring(s + overwrite_string.length);
    
    result = firstPart + remainingPart;
    
    return result;
}

remainingPart부분을 어떻게 처리해야할지 고민을 좀 했다. 

firtstPart는 my_string.substring(0,s) = He 와 overwrite_string인 lloWorl을 합친 문자열을 저장하고
remainingPart는 my_string.substring(s + overwrite_string.length) 까지를 분할해서 d를 저장한돠

그리고 result에 합쳐주면 완성 ~~^^