TIL_230414- 면접스터디, 프로그래머스

정윤숙·2023년 4월 16일
0

TIL

목록 보기
148/192
post-thumbnail

📒 오늘의 공부

1. 면접스터디_1회차

이력서 기반 질문

  • 스터디 방향, 규칙 정하고 이력서 기반 1:2 면접 진행
  • 피드백
    • 질문의 의도를 파악하고 질문에 해당하는 답만 말하기
    • 잘 모르는 질문일 수록 이것도 말해야 할 것 같고, 저것도 말해야 할 것 같아 말이 너무 장황해짐
    • 말해야 할 순서를 속으로 한 번 정리 후 차분히 말하기
    • 이력서 기반 예상 질문에 대해 준비 열심히 하기

2. 프로그래머스

Lv1. 정수 내림차순으로 배치하기

나의 풀이

function solution(n) {
    const sortN = n.toString().split('').sort((a,b)=> b-a)
    return +sortN.join('')
}
  • 숫자를 문자열로 바꿀 때 n.toString()toString(n)으로 쓰지 않기!
  • 문자열로 바꾸는 다른 방법
    • n + ""

다른 풀이

function solution(n) {
  const newN = n + "";
  const newArr = newN
    .split("")
    .sort()
    .reverse()
    .join("");

  return +newArr;
}
  • sort와 reverse를 쓰면 b-a로 sort한 것과 똑같다!
function solution(n) {
    //숫자가 분명히 더 빠름
    var nums =[];
    do{
        nums.push(n%10);
        n=Math.floor(n/10);
    } while(n>0)

    return nums.sort((a,b)=>b-a).join('')*1;
    //문자는 느림
    return (n+"").split('').sort((a,b)=>b-a).join('')*1;
}

Lv1. 이상한 문자 만들기

나의 풀이

잘못된 풀이

function solution(s) {
    const splitS = s.slice(' ')
    for(let i=0; i<splitS.length; i++){
        for(let j=0; j<splitS[i].length; j++){
            if(j%2 === 0){
               splitS[i][j].toUpperCase() }
        }
    }

    return splitS
}
  • s가 그대로 반환 됨.
  • s.slice(' ')는 공백이 아니라 'undefined'를 기준으로 문자열을 자른다는 뜻
  • splitS[i][j].toUpperCase()는 새로운 문자열을 반환하기 때문에 다시 splitS[i][j]에 할당해주어야 함

수정한 풀이

function solution(s) {
    const splitS = s.split(' ')
    for(let i=0; i<splitS.length; i++){
        let newS = '';
        for(let j=0; j<splitS[i].length; j++){
            if(j%2 === 0){
               newS += splitS[i][j].toUpperCase() }
            else{
                newS += splitS[i][j].toLowerCase()
            }
        }
        splitS[i] = newS
    }

    return splitS.join(' ')
}

다른 풀이

function toWeirdCase(s){
  return s.split(' ').map(i => i.split('').map((j, key) => key % 2 === 0 ? j.toUpperCase() : j.toLowerCase()).join('')).join(' ')
}
  • map을 이용하기!

알게된 것

toUpperCase()

  • 대문자 만들기
    • str.toUpperCase()

split은 배열로 만든다

  • 문자열을 split하면 배열로 반환
  • slice 하면 그대로 반환
profile
프론트엔드 개발자

0개의 댓글