๐Ÿ€TIL๐Ÿ€[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Coding Test ์Šคํ„ฐ๋””2

PYMยท2023๋…„ 8์›” 17์ผ
0

๐Ÿ€TIL๐Ÿ€Coding Test

๋ชฉ๋ก ๋ณด๊ธฐ
2/16
post-thumbnail

Q1. ์ฒซ ๋ฒˆ์งธ๋กœ ๋‚˜์˜ค๋Š” ์Œ์ˆ˜

์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ num_list๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์ฒซ ๋ฒˆ์งธ๋กœ ๋‚˜์˜ค๋Š” ์Œ์ˆ˜์˜ ์ธ๋ฑ์Šค๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์Œ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด -1์„ returnํ•ฉ๋‹ˆ๋‹ค.

๐Ÿฃ๋‚ด ์ฝ”๋“œ

function solution(num_list) {
    return num_list.indexOf(num_list.filter((num) => num < 0)[0])
}

๐Ÿ”์ธ์ƒ ๊นŠ์—ˆ๋˜ ์ฝ”๋“œ

const solution = num_list => num_list.findIndex(v => v < 0)
  • findIndex๋ฅผ ์‚ฌ์šฉํ•œ ์ .
  • findIndex๋ž€?
    • ์ธ์ž๋กœ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋ฐ˜ํ™˜

Q2. ๋ชจ์Œ ์ œ๊ฑฐ

์˜์–ด์—์„  a, e, i, o, u ๋‹ค์„ฏ ๊ฐ€์ง€ ์•ŒํŒŒ๋ฒณ์„ ๋ชจ์Œ์œผ๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด my_string์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ๋ชจ์Œ์„ ์ œ๊ฑฐํ•œ ๋ฌธ์ž์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿฃ๋‚ด ์ฝ”๋“œ

function solution(my_string) {
    let vowels = ['a', 'e', 'i', 'o', 'u'];
    
    return my_string.split('').filter((str) => vowels.indexOf(str) === -1).join('')
}
  • indexOf ๋Œ€์‹  includes ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.
    includes๋Š” ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ์ด์ž ๋ฌธ์ž์—ด ๋ฉ”์†Œ๋“œ๋‹ˆ๊นŒ!

๐Ÿ”์ธ์ƒ ๊นŠ์—ˆ๋˜ ์ฝ”๋“œ

function solution(my_string) {
    return my_string.replace(/[aeiou]/g, '');
}
  • replace ํ•จ์ˆ˜์™€ ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•œ ์ .
  • String.prototype.replace()
    • var newStr = str.replace(์ •๊ทœ์‹|๋ถ€๋ถ„ ๋ฌธ์ž์—ด, ์ƒˆ๋กœ์šด ๋ถ€๋ถ„ ๋ฌธ์ž์—ด|ํ•จ์ˆ˜)
    • ์ผ๋ฐ˜ ๋ฌธ์ž์—ด ์น˜ํ™˜์€ ์ฒ˜์Œ ๋ฐœ๊ฒฌํ•œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด๋งŒ ์ƒˆ๋กœ์šด ๋ถ€๋ถ„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์ฃผ์ง€๋งŒ, ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ™์€ ๋ฌธ์ž์—ด ์ „๋ถ€๋ฅผ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด๋กœ ์น˜ํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ค.
	var text = 'LLLOOOVVVEEE';

// ์ผ๋ฐ˜ ๋ฌธ์ž์—ด ์น˜ํ™˜ 
	text.replace('O', 'I');
	// LLLLIOOOVVVVEEEE

// ์ •๊ทœ์‹ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ์น˜ํ™˜ 
	text.replace(/O/gi, 'I');
	// LLLLIIIIVVVVEEEE

์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์น˜ํ™˜ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

	var text = 'LLLOOOVVVEEE';

	function replaceFn(str) {
	  return '{' + str + '}';
	}

	text.replace(/V/gi, replaceFn);
	// LLLLOOOO{V}{V}{V}{V}EEEE
  • ์ •๊ทœ์‹?

    ์ •๊ทœ ํ‘œํ˜„์‹, ๋˜๋Š” ์ •๊ทœ์‹์€ ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๋ฌธ์ž ์กฐํ•ฉ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ํŒจํ„ด

    • /[aeiou]/ ์ด๋ ‡๊ฒŒ / ๋กœ ๊ฐ์‹ธ์„œ ํ‘œํ˜„ํ•œ๋‹ค.
    • ์œ„ ์ฝ”๋“œ์—์„œ /[aeiou]/g ๋ผ๊ณ  ์“ด ๊ฒƒ์˜ g๋Š” ๊ธ€๋กœ๋ฒŒ ์„ ํƒ์ž๋กœ, g modifier๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ์ „์ฒด ๋งค์น˜๋˜๋Š” ๊ฒƒ๋“ค์„ ํ•œ๋ฒˆ์— ์น˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • i (insensitive) modifier๋Š” ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์ œ๊ฑฐ

Q3. ๋ฌธ์ž ๋ฐ˜๋ณต ์ถœ๋ ฅํ•˜๊ธฐ

๋ฌธ์ž์—ด my_string๊ณผ ์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, my_string์— ๋“ค์–ด์žˆ๋Š” ๊ฐ ๋ฌธ์ž๋ฅผ n๋งŒํผ ๋ฐ˜๋ณตํ•œ ๋ฌธ์ž์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

๐Ÿฃ๋‚ด ์ฝ”๋“œ

function solution(my_string, n) {
    let result = [];
    
    for(let i=0; i<my_string.length; i++){
        for(let j=0; j<n; j++){
            result.push(my_string[i]) 
        }
    }
    
    return result.join('')
}

๐Ÿ”์ธ์ƒ ๊นŠ์—ˆ๋˜ ์ฝ”๋“œ

function solution(my_string, n) {
   var answer = [...my_string].map(v => v.repeat(n)).join("");
   console.log(answer);
   return answer;
}
  • ๋ฌธ์ž์—ด์„ ์ผ์ •ํ•˜๊ฒŒ ๋ฐ˜๋ณตํ•ด์ฃผ๋Š” ํ•จ์ˆ˜repeat์˜ ์กด์žฌ๋ฅผ ์žŠ์ง€ ๋ง์ž!!!
    • ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ์˜ต์…˜์˜ count ์ˆซ์ž๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ๋ถ™์ธ ๋’ค,
      ๋งŒ๋“ค์–ด์ง„ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์€ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค.

Q4. ๋ฌธ์ž์—ด ๋’ค์ง‘๊ธฐ

๋ฌธ์ž์—ด my_string์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. my_string์„ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘์€ ๋ฌธ์ž์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿฃ๋‚ด ์ฝ”๋“œ

function solution(my_string) {
    let strToArr = [...my_string];
    let result = [];
    
    for(let i=strToArr.length-1; i>=0; i--){
        result.push(strToArr[i]);
    }
    
    return result.join('')
}

๐Ÿ”์ธ์ƒ ๊นŠ์—ˆ๋˜ ์ฝ”๋“œ

function solution(my_string) {
    var answer = [...my_string].reverse().join("");
    return answer;
}
  • ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ reverse ๋ฅผ ์‚ฌ์šฉํ•œ ์ 
    • ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜์ „. ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ ๋˜๋ฉฐ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ๋œ๋‹ค.

Q5. ์ˆจ์–ด์žˆ๋Š” ์ˆซ์ž์˜ ๋ง์…ˆ

๋ฌธ์ž์—ด my_string์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. my_string์•ˆ์˜ ๋ชจ๋“  ์ž์—ฐ์ˆ˜๋“ค์˜ ํ•ฉ์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿฃ๋‚ด ์ฝ”๋“œ

function solution(my_string) {
    let sum = 0;
    for(let i=0; i<my_string.length; i++){
        if(!isNaN(my_string[i])){
            sum += Number(my_string[i])
        }
    }
    
    return sum;
}

๐Ÿ”์ธ์ƒ ๊นŠ์—ˆ๋˜ ์ฝ”๋“œ

function solution(my_string) {
    return [...my_string].reduce((acc,cur)=>Number(cur) ? +acc + +cur : acc, 0)
}
  • reduce ํ•จ์ˆ˜ ์‚ฌ์šฉํ•œ ์  & isNaN() ๋Œ€์‹  Number() ์‚ฌ์šฉํ•œ ์ .

๊ทธ ๋ฐ–์— ์ƒˆ๋กœ์ด ์•Œ๊ฒŒ๋œ ์  & ๊ธฐ์–ตํ•  ์ 

  • for ์‚ฌ์šฉ์„ ์ค„์ด์ž! map, filter, reduce ๋“ฑ๋“ฑ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์—๋„ ์ต์ˆ™ํ•ด์ง€์ž!

  • if์˜ ์‚ฌ์šฉ์„ ์ค„์ด์ž! ์‚ผํ•ญ์—ฐ์‚ฐ์ž์— ์ข€ ๋” ์ต์ˆ™ํ•ด์ง€๋„๋ก ํ•˜์ž!

  • JavaScript์˜ ๋ฌธ์ž์—ด ๋ฉ”์†Œ๋“œ์ธ indexOf

    • ํŠน์ • ๋ฌธ์ž์—ด์ด ์ฒ˜์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜!
    • ์•„๋ž˜ ์ฝ”๋“œ๋Š” str1 ๋ฌธ์ž์—ด ์•ˆ์— str2 ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด 1์„ ๋ฐ˜ํ™˜ ์•„๋‹ˆ๋ฉด 2๋ฅผ ๋ฐ˜ํ™˜ ํ•˜๋Š” ํ•จ์ˆ˜
	// indexOf๋ฅผ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ• 
   function solution(str1, str2) {
    return str1.indexOf(str2) !== -1 ? 1 : 2
   }
   
   // split์„ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ•
   function solution(str1, str2) {
    return str1.split(str2).length > 1 ? 1 : 2
   }
  • split() ํ™œ์šฉ ์ž˜ ํ•˜์ž!

    • String ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•œ ๊ตฌ๋ถ„์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž์—ด๋กœ ๋‚˜๋ˆ ์ค€๋‹ค.

    • ๋ฐ˜ํ™˜ ๊ฐ’์€ ๋ฐฐ์—ด!! Array!! ์ฆ‰, ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค๊ณ ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฌธ์ž์—ด์„ ์ž๋ฅด๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜

    • substr(), substring(), slice()

    • str.substr(start[, length])
      str.substring(indexStart[, indexEnd])
      str.slice(beginIndex[, endIndex])

    • ์ด ์ค‘, ๋ฌธ์ž์—ด์„ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ž๋ฅผ ๋•Œ๋Š”, slice()๊ฐ€ ํšจ์œจ์ !

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

profile
๋ชฉํ‘œ๋Š” "ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์‹ถ์€, ํ•จ๊ป˜ ์ผํ•ด์„œ ์ข‹์€" Front-end ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€