본문 바로가기

백준 11478 - 서로 다른 부분 문자열의 갯수 (substr) JS 본문

개발/algorithm

백준 11478 - 서로 다른 부분 문자열의 갯수 (substr) JS

자전하는명왕성 2023. 9. 15. 10:26

https://www.acmicpc.net/problem/11478

문제는 단순한 편이다.

 

중복 처리는 지난 포스팅에서 활용했던 set() 을 사용하면 되고, 문자열 자르는 것은 substr 메서드를 활용했다.

이전까지는 대부분 slice를 활용해 문자열을 잘랐는데 왜 substr 메서드를 사용했느냐 묻는다면,

slice 메서드는 slice(시작 인덱스, 끝 인덱스) 로 문자열을 자르는 것이고

substr 메서드는 substr(시작 인덱스, 자를 길이) 로 문자열을 자르는 것이기 때문에 이런 문제에서 더 직관적일 것이라는 생각이었다.

2023.01.13 - [개발/JavaScript] - JS - 반복문 심화2 (map / filter / sort / slice / substring / substr/split / join / reduce)

 

풀이 코드 다음과 같다.

const fs = require('fs')
const input = fs.readFileSync(process.platform === "linux" ? "/dev/stdin":"입력.txt")
  .toString().trim()

function solution(data) {
  const set = new Set()
  
  data.split('').forEach((_, i)=> {
  // 만약 총 data의 길이가 5라면
  // i = 0 일 때, 길이 5의 문자열 1개
  // i = 1 일 때, 길이 4의 문자열 2개를 반환한다고 볼 수 있다
    for(let j = 0 ; j <= i ; j ++) {
      set.add(data.substr(j, data.length - i))
    }
  })

  console.log(set.size)
}

solution(input)

 

Comments