프로그래머스 -코딩테스트

그냥차차·2022년 11월 9일
0

코딩테스트

목록 보기
1/1
post-thumbnail
post-custom-banner

자바스크립트 Lv 0

1.두수의차

이문제를 풀려면 사칙연산에 대해 알아야함(이해도100%)

function solution(num1, num2) {
    var answer = num1-num2;
    return answer;
}

2. 몫구하기

이문제를 풀려면 Math에 대해 알아야함.M은 반드시 대문자로

Math.floor() : 소수점 이하를 버림한다.

Math.ceil() : 소수점 이하를 올림한다.

Math.round() : 소수점 이하를 반올림한다.

function solution(num1, num2) {
    const answer = Math.floor(num1 / num2);
    return answer;
}

3. 두 수 의 나눗셈

function solution(num1, num2) {
    var answer = Math.floor(num1/num2*1000)
    return answer;
}

4. 숫자비교하기

이문제를 풀려면 조건문 if,else를 알아야함

function solution(num1, num2) {
    var answer = 0;
    if(num1===num2){
        answer = 1;
    }else {
        answer = -1
    }
    return answer;
}

4.나머지구하기

이문제를 풀려면 사칙연산 중 %에대해 알아야함

function solution(num1, num2) {
    var answer = num1%num2;
    return answer;
}

5. 두수의 곱

이문제를 풀려면 사칙연산중 *에대해 알아야함

function solution(num1, num2) {
    var answer = num1*num2;
    return answer;
}

6.두수의 합

이문제를 풀려면 사칙연산중 +에대해 알아야함

function solution(num1, num2) {
    var answer = num1+num2;
    return answer;
}

7. 짝수의 합

이문제를 풀려면 조건문, 반복문에 대해 알아야함 (이문제는 이해도 30%)

function solution(n) {
    var answer = 0;
    for(i=0; i<=n; i++){
        if(i%2===0){
            answer+=i;
        }
    }
    return answer;
}

8. 두수의 나눗셈

function solution(num1, num2) {
    var answer = Math.floor(num1/num2 * 1000);
    return answer;
}
// 1.num1과 num2를 나눈다.
// 2.나눈값에 *1000을한다
// 3.그값을 정수로만 뽑는다(Math.floor 말고도 parseInt도 있음)

9. 분수의 덧셈

 function solution(denum1, num1, denum2, num2) {
    var answer = [];
    // 분수통분하기 
    const denum = num2*denum1+num1*denum2 // 분자의값 구하기
    const num = num1*num2   //분모의값 구하기
    let minnumber;  //작은수를 담을 변수를 하나 만들어줌 
    if(denum<num){
        minnumber=denum;
    }else{
        minnumber=num;
    }
    while(true){                // while문을 쓰는 이유는 조건이 만족하는동안에 계속 반복함 if문은 조건이 만족하면 그냥끝임 
    if(denum % minnumber===0){  //작은수를 나눴을때 0이되면 최대공약수인것임
        if(num % minnumber===0){    //if문안에 if문을 넣음 
            return[denum / minnumber, num/minnumber]
        }
    }
    minnumber = minnumber -1;
}
}
// 1.분모덧셈
// 2.분자분모의 최대공약수로 나눠줌
// 2-1.분자분모중 작은 수를 찾기
// 2-2.작은수를 분자분모로 나눠보기
// 2-2-1.둘다 나눠 떨어지면 그게 최대공약수임 >> 조건문 ~~하면 
// 2-2-2.안 나눠떨어지면 작은수를 1줄이고 2-2로 돌아가서 다시반복함 >> while 반복문을 사용g

10. 배열 두배만들기

function solution(numbers) {
    var answer = [];
    let cnt=0;  // 변수를 하나만들어주고
    while(cnt<numbers.length){  //배열의 길이만큼
        answer.push(numbers[cnt]*2); //*2를해서 push해서 다시 배열에 넣어야함 
        cnt=cnt+1; 
    }
 return answer;
}
// 1.배열안에 있는 원소의 갯수가 다르다.
// 2.배열의 길이만큼에 *2를 해야한다.

map을 사용해서 배열 두배만들기

function solution(numbers) {  
    return numbers.map((num)=>num*2)
}

11. 나머지구하기

function solution(num1, num2) {
    var answer = num1%num2;
    return answer;
}

12. 중앙값구하기

function solution(array) {
  ///1-4. 반복문의 길이만큼 반복한다
  let arraycnt =0;   
  let newarray=[];                        // 새배열을 하나 만들어줌 
  while(arraycnt < array.length){
      let mini=1000;                          // 0이라고 하지않은이유는 최대값 1000과 배열들을 비교할것 
     // 1-1. 배열에서 최소값을 찾는방법 
      let cnt = 0;                              //array의 배열음 담을 cnt라는 변수를 만들어준다.
      while(cnt < array.length) {
         if(mini > array[cnt]) {            //mini가 배열의 담긴값보다 크면 최소값이 아니라는 소리(true)니까 아래를 실행한다.
                mini = array[cnt];          //그 최솟값이 mini이다.     
      }           
      cnt = cnt + 1;                      //cnt는 배열의 길이를 담을 변수기때문에 0부터 계속 +1씩 증가되야함.
  }
 // 1-2새 배열에 넣는방법. 
  newarray.push(mini);                //새로만든 배열에 최소값을 넣어줌
  // 1-3 기존배열에 있는 값을 지우는방법
  let cnt2 = 0;                       //cnt2라는 새로운 변수를 만들어줌
  while(cnt2 < array.length) {            
      if(mini === array[cnt2]) {          //최소값이랑 원소가 같으면
          array[cnt2] = 1000;          //최소값이 최대값인 1000이 된다.라고 하고 break를 해서 코드를 빠져나온다. 
          break;
      }
      cnt2 = cnt2 + 1
  }     
  /*
   if(1000>9[0]){     //array의 0번째값인 9와 1000을비교 했을때 이게 true면 아래값을 실행함.
      mini=9[0]       //1000이 9보다 크니까 9는 mini가된다.
  }
   if(9>-1[1]){       //mini가 된 9가 array의 1번째값인 -1보다 큰게 true니까 아래값을 실행함
      mini=-1[1]      //mini는 -1이된다.
  }
  if(-1>0[2]){        //mini가 된-1이 array의 2번재값인 2보다 크지않으니  false니까 아랫값을 실행못함.
      mini=-1[2]      //if문은 실행되지않고 minis는 -1이 된다.
  }
  */       
      arraycnt = arraycnt + 1;      
  }
  return newarray[Math.floor(array.length / 2)];
}
/*
1.배열 정리하기
1-1.배열중 작은값을찾아라
1-2.찾으면 새로운 배열에 넣어라
1-3.기존에 배열에서 지운대
1-4.배열의 길이만큼 반복한후 끝낸다 아니면 1.1로 돌아간다
1-5.반복한다.
2.가운데값 꺼내기
2-1.가운데값 꺼내는건 배열의 길이를 2로나누면됨. 그후 math.floor를하면 뒤에 소수점은 날라감.
*/

13. 최반값 구하기

function solution(array) {
    let sotearray = array.sort((a,b)=>a-b);
    var answer = 0;
    let cnt =0;    
    let choi =-1            // 최빈값을 choi라고 변수를 준후 나올수없는값 -1을 부여함 
    let choirepeatcnt = 0;  // 최빈값이 될때 몇번반복해서 된건지
    let repeatcnt=0;        // 현재 똑같은 숫자가 몇번 나왔는지
    let befornumber =-1      //  이전숫자
    let isdupchoi=false;
    while(cnt<array.length){
        if(befornumber !== array[cnt]){     
            repeatcnt = 1;
        }else{
            repeatcnt = repeatcnt+1;
        }     
        if(repeatcnt ===choirepeatcnt){
            if(choi !== array[cnt]){
                 isdupchoi = true;  
            }
        }           
        if(repeatcnt>choirepeatcnt){
            choi = array[cnt];
            choirepeatcnt=repeatcnt;
            isdupchoi=false;
        }
        befornumber=array[cnt];
        cnt=cnt+1;       
    }
    if(isdupchoi) return-1;
    return choi;
}
// 1. 앞에서부터 차례대로 원소를 확인하며 갯수를 샌다
// 2. 최반값을 그때그때 기록한다.

14. 짝수는 싫어요

function solution(n) {
    var answer = [];
    let cnt= 1;
    while(cnt<=n){
        if(cnt%2==1){
            answer.push(cnt);
        }
        cnt=cnt+1;
    }
    return answer;
}

15. 나이출력

문제설명

  • 머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.

제한사항

  • 0 < age ≤ 120 / 나이는 태어난 연도에 1살이며 1년마다 1씩 증가합니다.

문제풀이

2022년에서 나이를빼고 +1를 해줌

function solution(age) {
    var answer = 2022 - age + 1;
    return answer;
}

16. 아이스 아메리카노

문제설명

  • 머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 0 < money ≤ 1,000,000

문제풀이

function solution(money) {
    const coffe = 5500
    const glass = Math.floor(money/coffe)
    const wksehs=money%coffe
    var answer = [glass,wksehs];
    return answer;
}

17. 배열 원소의길이

문제설명

  • 문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ strlist 원소의 길이 ≤ 100
  • strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

문제풀이

function solution(strlist) {
     var answer = [];
    for(let i=0; i<strlist.length ; i++){
    answer.push(strlist[i].length)
    }  
    return answer;
}

18. 배열뒤집기

문제설명

  • 정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ num_list의 길이 ≤ 1,000
    0 ≤ num_list의 원소 ≤ 1,000

문제풀이

  • reverse를 이용해서 배열을 뒤집음
function solution(num_list) {
    const List = num_list.reverse()
    var answer = List
    return answer;
}

19. 짝수 홀수 개수

문제설명

  • 정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 1 ≤ num_list의 길이 ≤ 100
    0 ≤ num_list의 원소 ≤ 1,000

문제풀이

  • 전체리스트에서 짝수의 숫자만 걸러서 다른변수에 push하고
  • 전체리스트의 숫자에서 짝수리스트의 숫자를 빼면 나머지는 홀수리스트만 남게됨
function solution(num_list) {
    let answer2=[];
    let answer = [];
    for(let i=0; i<num_list.length; i++){
        if(num_list[i]%2===0){
            answer2.push(i)
        }
    }
    answer=[answer2.length, num_list.length-answer2.length]
    return answer;
}

20. 문자열 뒤집기

문제설명

  • 문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000

문제풀이

  • split("")으로 문자열의 문자들을 1개씩 분리해서 배열을 만들어주고, reverse()로 배열을 역순으로 변경하고 , join("")으로 다시 합쳐줌
function solution(my_string) {
    let string = my_string.split("").reverse().join("")
    var answer = string;
    return answer;
}
profile
개발작
post-custom-banner

0개의 댓글