[프로그래머스] 크기가 작은 부분 문자열 (Javascript)

2025. 2. 3. 09:51·Algorithm/프로그래머스 LV1

문제

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

요구사항
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.

제한조건
- 1 ≤ p의 길이 ≤ 18
- p의 길이 ≤ t의 길이 ≤ 10,000
- t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.

입출력
t p result
"3141592" "271" 2
"500220839878" "7" 8
"10203" "15" 3

 

 

내가 생각한 로직

1. for문과 slice를 이용해서 인덱스 0부터 차례대로 p의 길이만큼 문자열을 자른다.

2. 해당 문자열과 p 앞에 +를 붙여 크기를 비교한 뒤, 해당 문자열이 p보다 작거나 같을 경우, count를 증가한다.

3. for문이 끝났을 때의 count 값을 반환한다.

 

 

내가 구현한 코드

function solution(t, p) {
    let count = 0;
    let lastIndex = p.length;
    for (let i = 0; i < t.length; i++) {
        const target = t.slice(i, lastIndex);
        +target <= +p && target.length === p.length ? count += 1 : count += 0;
        lastIndex += 1;
    }
    return count;
}

삼항연산자를 썼는데, 간단하게 if문으로 작성하는게 더 좋을 것 같다.

 

 

다른 해결방법

function solution(t, p) {
    let count = 0;
    for(let i=0; i<=t.length-p.length; i++) {
        let value = t.slice(i, i+p.length);
        if(+p >= +value) count++;
    }
    return count;
}

내가 작성한 코드와 작동 방법은 동일한데, 조금 더 간단하게 쓸 수 있다는 것을 알게 됐다.

가독성도 훨씬 좋은 것 같다.

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > 프로그래머스 LV1' 카테고리의 다른 글

[프로그래머스] 삼총사 (Javascript)  (1) 2025.02.07
[프로그래머스] 3진법 뒤집기 (Javascript)  (0) 2025.02.06
[프로그래머스] 이상한 문자 만들기 (Javascript)  (0) 2025.02.05
[프로그래머스] 예산 (Javascript)  (0) 2025.02.04
[프로그래머스] 약수의 개수와 덧셈 (Javascript)  (2) 2025.02.02
'Algorithm/프로그래머스 LV1' 카테고리의 다른 글
  • [프로그래머스] 3진법 뒤집기 (Javascript)
  • [프로그래머스] 이상한 문자 만들기 (Javascript)
  • [프로그래머스] 예산 (Javascript)
  • [프로그래머스] 약수의 개수와 덧셈 (Javascript)
집으로 감자
집으로 감자
Hello World
  • 집으로 감자
    Potato to Home
    집으로 감자
  • 전체
    오늘
    어제
  • 링크

    • Github
    • 분류 전체보기
      • Front-end
        • TIL
        • Javascript
        • Typescript
        • React
        • Next.js
        • CSS
        • 라이브러리
      • Algorithm
        • 프로그래머스: 기초 트레이닝
        • 프로그래머스 LV1
      • TroubleShooting
      • Problem & Solution
      • Project
      • Programing Knowledge
        • 개발 용어
        • CS
        • 운영체제
        • 자료구조
        • 데이터 베이스
  • 태그

    react
    Til
    프로그래머스
    트러블슈팅
    반응형웹
    CSS
    JavaScript
    실행컨텍스트
    tanstackquery
    styledcomponent
    코딩테스트
    http
    회고
    개발용어
    문제해결
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
집으로 감자
[프로그래머스] 크기가 작은 부분 문자열 (Javascript)
상단으로

티스토리툴바