Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[JavaScript] 프로그래머스 코딩테스트 입문 : 문자열 안에 문자열 본문

⚙️ 코딩테스트

[JavaScript] 프로그래머스 코딩테스트 입문 : 문자열 안에 문자열

썸머몽 2023. 3. 23. 23:59
728x90

📌  문제

문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

  • 1 ≤ str1의 길이 ≤ 100
  • 1 ≤ str2의 길이 ≤ 100
  • 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.

📌  풀이

str2가 있는지 없는지 어떻게 알아봐야 하는지 멘붕이었는데 매우 적절한 includes()라는 메서드가 있었다!

이 메서드는 배열이 특정 요소를 포함하고 있는지를 불리안 값으로 판별해준다.

 

Array.prototype.includes() - JavaScript | MDN

includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다.

developer.mozilla.org

해서 만약 str1이 str2를 포함하고 있다면 (true) 1을 리턴하고 그렇지 않다면 2를 리턴하는 짧은 코드를 완성할 수 있었다.

 

그런데 includes를 모른다면 내가 아는 매서드에서는 무엇을 활용해서 풀 수 있었을까...

아래와 같이 split을 사용할 수 있었다.

 

str1 안에 str2가 있다면, str2로 나누었을 때 str2 앞/뒤로 나누어져 2개의 문자열이 생성되어 길이가 2가 된다. (str2가 1번 있다면)

없다면 나눠지지 않았기 때문에 1이 되는데, str2가 몇 번 반복되는지 모르니 더 확실한 나눠지지 않은 경우로 코드를 짜면 된다.

즉 나눴을 때 길이가 1이라면 없으니 2를 리턴하고, 1이 아니라면 1을 리턴하게 하면 된다.

 

이 과정에서 삼항 연산자도 배웠다.

if문을 남용하는 것보다 훨씬 간단한 식 같아서 앞으로 자주 사용해야겠다.

 

 

조건 (삼항) 연산자 - JavaScript | MDN

조건 (삼항) 연산자는 JavaScript에서 세 개의 피연산자를 받는 유일한 연산자입니다. 앞에서부터 조건문, 물음표(?), 조건문이 참(truthy)일 경우 실행할 표현식, 콜론(:), 조건문이 거짓(falsy)일 경우

developer.mozilla.org

 

📌  코드

function solution(str1, str2) {
    return str1.split(str2).length == 1 ? 2 : 1
}
function solution(str1, str2) {
    if (str1.includes(str2)) {
        return 1
    } else {
        return 2
    }
}
728x90