21일(2022.01.18 5시간 2분) 김서방 찾기, 가운데글자 가져오기

roadzmoon76·2022년 1월 18일
0

매일 공부

목록 보기
22/217

함수문제

  • "안녕 내 이름은 제시카야" 라는 문장을 프린트하는 함수 'greet'
function greet (name) {
  console.log("안녕 내 이름은 제시카야");
}

greet();
  • 이름을 매개변수로 전달받아 다양한 이름을 프린트 할 수 있게 함수를 수정
function greet (name) {
  console.log("안녕 내 이름은 " + name + "야");
}

greet("에밀리");
  • 매개변수로 전달받은 이름을 반환하게 함수를 수정
function greet (name) {
  return name;
}

let a = greet("에밀리");
console.log(a);
  • meetAt 함수를 만들기
    인자를 세개

    첫번째 인자는 년도에 해당하는 숫자
    두번째 인자는 월에 해당하는 숫자
    세번째 인자는 일에 해당하는 숫자

    년도 인자만 받았을 경우 → "1234년" 과 같은 형식의 문자열을 리턴

    년도,월 인자를 받았을 경우 → 년도와 월을 조합해서 "1234년 5월" 과 같은 형식의 문자열을 리턴

    년도,월,일 인자를 전부 받았을 경우 → 년도,월,일을 조합해서 "1234/5/6" 과 같은 형식의 문자열을 리턴

    function meetAt (year, month, date) {
    
     if (date) {
       return `${year}/${month}/${date}`;
     } else if (month) {
       return `${year}${month}`;
     } else if (year) {
       return `${year}`;
     }
    }

function에서 매개변수는 순서대로 들어간다!!!
위의 예시에서 date가 있다는건 year, month 정보도 있다는 소리라서 if(year && month && date) 이렇게 까지 안쓰고 if(date)만 해줘도 됨

  • findSmallestElement 함수

findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 배열

arr 의 값들 중 가장 작은 값을 리턴

만일 arr 가 비어있으면 0을 리턴

function findSmallestElement (arr) {
  let a = arr;
  
  if (a.length === 0) {
    return 0;
  } else {
    return Math.min(...a);
  }
}

console.log(findSmallestElement([100,200,3,-1,2,1]));

작은 값을 찾는걸 어떻게 프로그래밍할지 고민하는게 목표인 문제였는데, 배열에서 가장 작은 수를 찾는 기본함수를 구글링해버림

  • 돈을 매개변수로 받으면 몇개의 지폐와 동전이 필요한지 최소 개수를 계산해주는 함수
function howMoney (money) {
  let back;
  let oBack;
  let cheon;
  let oCheon;
  let man;
  let oMan;

  back = money / 100;

  oBack = parseInt(back / 5);
  back = back % 5;

  cheon = parseInt(oBack / 2);
  oBack = oBack % 2;

  oCheon = parseInt(cheon / 5);
  cheon = cheon % 5;

  man = parseInt(oCheon / 2);
  oCheon = oCheon % 2;

  oMan = parseInt(man / 5);
  man = man % 5;

  return `  50000 * ${oMan}
  10000 * ${man}
  5000 * ${oCheon}
  1000 * ${cheon}
  500 * ${oBack}
  100 * ${back}`;
}

console.log(howMoney(67800));
  • '어떻게 문제 해결을 단순 노가다 식으로 생각해서 프로그래밍 할까'로 접근했어야 했는데
    '어떻게 문헤 해결을 해야 내가 빨리 풀까'라고 사람이 푼다는 접근을 해서 오히려 자동화된 느낌이 아닌 코딩이 나옴
  • Math.floor 와 같은 유용한 함수들이 많으니 Math 객체 안에 무슨 함수들이 있는지 한번 살펴보자

MAC 터미널(Unix)

  • ls : 현재 위치에 있는 폴더들. list의 약자.
    ls 원하는폴더(현재 경로 안에있는) 하면 그 폴더 안의 내용 확인가능.
    ls -l 하면 더 자세하게 파일 확인 가능
    ls -a 하면 숨겨진 파일들도 다 나옴
    ls -la 하면 l과 a 둘다 사용

  • cd : 내가 원하는 폴더로 감(Change Directory의 약자). desktop으로 가고싶다면 cd desk top
    cd . 에서 . 은 현재경로를 의미(아무런 효과 x)
    cd .. 에서 .. 은 현재경로의 상위 경로를 의미
    cd ~ 현재 설정된 사용자의 최상위 경로로 이동
    cd - 바로 이전 경로로

  • mkdir : 폴더 만들기(make directory). GzZ폴더를 만들고 싶다면 mkdir GzZ
    mkdir -p dir1/dir2/dir3 하면 한번에 경로가 만들어짐

  • code . : vscode 실행

  • man : manual의 약자. man man 으로 들어감. 원하는 항목이 있다면 man claer 처럼 들어갈 수있음. 나가고 싶으면 q

  • clear : 터미널에 있는 모든 텍스트를 청소

  • pwd : Print Working Directory 약자. 현재있는곳의 전체 경로를 프린팅 해줌

  • open . : 현재경로를 파일 탐색기에서 열고 싶을 때

  • find . : 원하는 폴더나 파일을 찾아줌.
    find . -type file -name "*.txt" 끝이 .txt로 끝나는 파일 찾기
    find . -type directory -name "*2" 끝이 2로 끝나는 폴더 찾기

  • which : 내가 지금 실행하고자 하는 파일이 어디에 설치되어있는지 어디에 설정되어있는지 경로를 확인할 때 사용
    which node 하면 node의 실행경로 확인
    which code 하면 vscode의 경로 확인

  • touch : 파일 만들기

  • cat : 파일안에 있는 내용 확인 가능. 여러개의 파일을 쓰면 쓴 파일들 내용 모두 확인 가능

  • echo : 자체적으로는 그냥 에코 기능이지만 내용 > 파일명 하면 그 파일에 내용 기록하면서 생성함.
    기존에 있는 파일명에 하면 그대로 덮어씌우고 >>로 해야 밑에 내용이 추가됨

  • cp : copy의 약자 cp 파일명 경로/ 해주면 원하는 위치로 해당파일 복사

  • mv : move의 약자 mv 파일명 경로/ 해주면 원하는 위치로 해당파일 이동

  • rm : remove의 약자 rm 파일명 해주면 해당파일 삭제
    폴더를 삭제할때는 rm -r 해당폴더 해줘야함

  • grep : Global regular expression print의 약자
    grep "world" *.txt 하면 txt파일중 world가 들어간 파일 모두 검색
    grep -n "world" *.txt 하면 그 단어가 들어간 줄이 몇번째 줄인지 나옴
    grep -ni "world" *.txt 하면 대소문자 상관없이 해당 줄 검색
    grep -nir "world" . 하면 현재경로와 그하위에 있는 모든 서브 폴더에서 검색

  • export : 환경변수 설정. export MY_DIR="dir1" 환경변수는 대문자로 만들고 단어 사이사이에 _를 넣어준다.
    env를 이용하면 모든 환경변수 출력 가능
    $MY_DIR 이런식으로 $다음에 환경변수이름 쓰면 사용가능
    unset MY_DIR 하면 지정된 환경변수 삭제 가능

김서방 찾기

  1. 로직 구현
function solution(seoul) {
    var answer = '';
    for (let i=0; i<seoul.length; i++) {
        if (seoul[i] === "Kim") {
            let x = i;
            answer = "김서방은 " + x + "에 있다";
        }
    }
    return answer;
}

"김서방은 " + x + "에 있다" 대신 `김서방은 ${x}에 있다` 쓰니 답이 이상하게 나옴. if문 안에서 제대로 안먹나 싶음.

  1. 배열 메소드 사용
function solution(seoul) {
    var answer = '';
    let x = seoul.indexOf("Kim");
    answer = `김서방은 ${x}에 있다`;
    return answer;
}

가운데글자 가져오기

function solution(s) {
    var answer = '';
    if (s.length % 2 === 1) {
        answer = s[(s.length - 1) / 2];
    } else {
        answer = s[s.length / 2 - 1] + s[s.length / 2];
    }
    return answer;
}

profile
크론병걸린 자퇴생, 개발자되기

0개의 댓글