코딩테스트 연습

AN JUHYUN·2024년 2월 20일

개인공부를 해야하는데 외부에 나와있어서 코딩테스트를 하면서 머리를 돌려보도록 한다.

연습사이트

https://school.programmers.co.kr/

굉장히 유명한 사이트 프로그래머스 스쿨! 간단하게 구글 가입 후 코테연습

신선한 답안

일단 lv.0 으로 되어있는 문제를 쭉 풀면서 신선했던 답안을 많이 발견했다.

역시 세상에 천재는 많구나-!

정수 n을 string형으로 반환

이정도야 하면서 풀어낸 나의 답안

function solution(n){
    return String(n);
}

신선했던 다른 이의 답안

const solution = String;

와 이런게 되나?

실수 n을 정수부분만 출력

평범하게 풀어낸 나의 답안

function solution(n){
	return Math.floor(n);
}

충격적이였던 다른 답안

const solution = flo => ~~flo;

해설 :
NOT연산자로 실수를 32비트 정수로 변환하고 반전시킴
이걸 다시 32비트 정수로 변환하고 반전시켜서 출력

그리고 내 답안은 정확한 답이 아니였다.

Math.floor(num)은 주어진 수보다 작거나 같은 가장 큰 정수반환
Math.trunc(num)은 소수부를 버림

결론

운이 좋았다. 개념적으로 명확하게 알자. 버림은 Math.trunc(num)!!
그런데 조건문에 num이 0보다 크네.. 운도 좋았고 틀린코드는 아니였다~

문자열 반복해서 출력하기

String number 형태의 값이 주어졌을때 String을 number수만큼 반복해서 출력하기!
나의 답안 : 무지해서 반복문을 사용

input = input.split(' ');
n = Number(input[1]);
for(let i=0;i<n-1;i++){
    str += input[0];
}
console.log(str);

좋았던 답안

input = input.split(' ');
n = Number(input[1]);
console.log(input[0].repeat(n));

결론

repeat(number) 이런 메서드도 있었구나! 알아둬

문자열 겹쳐쓰기

문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

내가 처음에 작성한 답안

function solution(my_string, overwrite_string, s) {
    
    let chgText = my_string.substr(s,overwrite_string.length);
    return my_string.replace(chgText,overwrite_string)
}

오류가 있다! 왜지? : replace가 처음 발견한 문자만 바꾸기 때문이다!

다시 수정한 답안

function solution(my_string, overwrite_string, s) {
    return my_string.slice(0, s) + overwrite_string + my_string.slice(s + overwrite_string.length);
}

결론

아 어렵다 !! slice, replace, substr 나눠서 다시 명확하게 공부하자!!

profile
frontend developer

0개의 댓글