코딩 공부/코딩테스트

자바스크립트 코딩테스트 입문 (7)

천서리 2023. 5. 22. 22:21
QUOTE THE DAY

“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”

- 이글슨 (Eagleson)
반응형

코딩테스트 입문 Day 7 문자열, 조건문, 수학, 반복문

출처 : https://programmers.co.kr/

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


특정 문자 제거하기

문제

문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

 

제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • letter은 길이가 1인 영문자입니다.
  • my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
  • 대문자와 소문자를 구분합니다.

 

입출력 예

my_string letter result
"abcdef" "f" "abcde"
"BCBdbe" "B" "Cdbe"

 

입출력 예 설명

 

입출력 예 #1

  • "abcdef" 에서 "f"를 제거한 "abcde"를 return합니다.

입출력 예 #2

  • "BCBdbe" 에서 "B"를 모두 제거한 "Cdbe"를 return합니다.

 

solution.js

function solution(my_string, letter) {
    var answer = my_string.replace(new RegExp(letter, 'g'), '');
    return answer;
}
  1. replace 메서드를 사용하여 문자열 my_string에서 new RegExp(letter, 'g')로 표현된 정규 표현식 패턴에 해당하는 문자열을 두 번째 인수인 빈 문자열('')로 치환합니다.
  2. new RegExp(letter, 'g')RegExp 생성자를 사용하여 정규 표현식 객체를 생성하는 부분입니다. letter는 실제 찾을 문자열이며, 'g'는 전역 검색(global search)을 나타내는 플래그입니다. 전역 검색 플래그를 사용하면 문자열 전체에서 letter를 모두 찾을 수 있습니다.

따라서 answer 변수에는 my_string에서 letter를 제거한 새로운 문자열이 할당되고, 이를 return문을 통해 반환합니다.


각도기

문제

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

  • 예각 : 0 < angle < 90
  • 직각 : angle = 90
  • 둔각 : 90 < angle < 180
  • 평각 : angle = 180

 

제한사항

  • 0 < angle ≤ 180
  • angle은 정수입니다.

 

입출력 예

angle result
70 1
91 3
180 4

 

입출력 예 설명

 

입출력 예 #1

  • angle이 70이므로 예각입니다. 따라서 1을 return합니다.

입출력 예 #2

  • angle이 91이므로 둔각입니다. 따라서 3을 return합니다.

입출력 예 #3

  • angle이 180이므로 평각입니다. 따라서 4를 return합니다.

 

solution.js

function solution(angle) {
    if (angle > 0 && angle < 90) {
        return 1;
    } else if (angle === 90) {
        return 2;
    } else if (angle > 90 && angle < 180) {
        return 3;
    } else if (angle === 180) {
        return 4;
    }
}
  1. 첫 번째 조건문은 angle이 0보다 크고 90보다 작은 경우를 확인합니다. 이 조건이 참이면 1을 반환하며, 이는 예각을 나타냅니다.
  2. 두 번째 조건문은 angle이 90인 경우를 확인합니다. 이 조건이 참이면 2를 반환하며, 이는 직각을 나타냅니다.
  3. 세 번째 조건문은 angle이 90보다 크고 180보다 작은 경우를 확인합니다. 이 조건이 참이면 3을 반환하며, 이는 둔각을 나타냅니다.
  4. 네 번째 조건문은 angle이 180인 경우를 확인합니다. 이 조건이 참이면 4를 반환하며, 이는 평각을 나타냅니다.
  5. 주어진 angle 값이 어떤 조건에도 해당하지 않는 경우, 즉 위의 조건들 중 하나에 해당하지 않는 경우 함수에서는 명시적인 반환문이 없으므로 암묵적으로 undefined를 반환하게 됩니다.

양꼬치

문제

머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 0 < n < 1,000
  • n / 10 ≤ k < 1,000
  • 서비스로 받은 음료수는 모두 마십니다.

 

입출력 예

n k result
10 3 124,000
64 6 768,000

 

입출력 예 설명

 

입출력 예 #1

  • 10인분을 시켜 서비스로 음료수를 하나 받아 총 10 * 12000 + 3 * 2000 - 1 * 2000 = 124,000원입니다.

입출력 예 #2

  • 64인분을 시켜 서비스로 음료수를 6개 받아 총 64 * 12000 + 6 * 2000 - 6 * 2000 =768,000원입니다.

 

solution.js

function solution(n, k) {
    var yakitoriPrice = 12000;
    var drinkPrice = 2000; 

    var totalYakitoriPrice = n * yakitoriPrice;
    var totalDrinkPrice = Math.max(0, k - Math.floor(n / 10)) * drinkPrice;

    var totalPrice = totalYakitoriPrice + totalDrinkPrice;

    return totalPrice;
}
  1. 첫 번째 줄에서는 양꼬치 1인분의 가격을 yakitoriPrice 변수에 12000으로 할당합니다.
  2. 두 번째 줄에서는 음료수의 가격을 drinkPrice 변수에 2000으로 할당합니다.
  3. 세 번째 줄에서는 양꼬치 가격 총액을 계산하기 위해 n인분의 양꼬치를 주문한 경우, nyakitoriPrice를 곱하여 totalYakitoriPrice 변수에 할당합니다.
  4. 네 번째 줄에서는 음료수 가격 총액을 계산하기 위해 양꼬치를 10인분씩 먹을 때마다 음료수를 무료로 받을 수 있는데, 이를 고려하여 필요한 음료수의 개수를 계산합니다. Math.floor(n / 10)을 통해 양꼬치를 10인분씩 먹은 횟수를 구하고, k에서 이 값을 뺀 후, 음료수 개수가 음수가 되지 않도록 Math.max(0, ...)를 사용합니다. 그리고 이 값을 drinkPrice와 곱하여 totalDrinkPrice 변수에 할당합니다.
  5. 마지막 줄에서는 총 지불해야 하는 가격을 양꼬치 가격 총액과 음료수 가격 총액의 합으로 계산하여 totalPrice 변수에 할당합니다.
  6. 이후 return totalPrice를 통해 계산된 총 지불 금액을 반환합니다.

짝수의 합

문제

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

 

제한사항

  • 0 < n ≤ 1000

 

입출력 예

n result
10 30
4 6

 

입출력 예 설명

 

입출력 예 #1

  • n이 10이므로 2 + 4 + 6 + 8 + 10 = 30을 return 합니다.

입출력 예 #2

  • n이 4이므로 2 + 4 = 6을 return 합니다.

 

solution.js

function solution(n) {
    var answer = 0;
    
    for (var i = 2; i <= n; i += 2) {
        answer += i;
    }
    
    return answer;
}
  1. 첫 번째 줄에서는 초기값으로 변수 answer를 0으로 설정합니다. 이 변수는 더해진 짝수의 총합을 나타냅니다.
  2. 두 번째 줄부터 시작하는 for 반복문은 변수 i를 2부터 시작하여 n보다 작거나 같을 때까지 2씩 증가시킵니다. 이렇게 하면 in 이하의 짝수를 나타내게 됩니다.
  3. 반복문의 각 반복에서는 현재의 i 값을 answer에 더해줍니다. 이렇게 하면 answer 변수는 2부터 n까지의 모든 짝수를 더한 값이 됩니다.
  4. 마지막으로 return answer를 통해 더해진 짝수의 총합인 answer 값을 반환합니다.

따라서 이 함수를 사용하여 주어진 정수 n 이하의 짝수들을 모두 더한 값을 구할 수 있습니다.

반응형
Adventure Time - BMO