정규표현식, search()
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')
const solution = (input) => {
const re = new RegExp(/FBI/g)
let result = []
for(let i = 0; i<input.length; i++){
if(input[i].search(re) !== -1) result.push(i+1)
}
return result.length !== 0 ? result.join(' ') : "HE GOT AWAY!"
}
console.log(solution(input))
split()
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')
const solution = (input) => {
let result = []
for(let i = 0; i<input.length; i++){
if(input[i].split("FBI").length > 1) result.push(i+1)
}
return result.length === 0 ? "HE GOT AWAY!" : result.join(" ")
}
console.log(solution(input))
문자열 "FBI"가 존재하면 split() 했을 때 배열의 길이가 2이상이 되는 특징을 이용했다.
왜인지 모르겠는데 test()를 써서 풀었을 땐 틀렸습니다
라고 뜬다.
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')
const solution = (input) => {
const re = new RegExp(/FBI/g)
let result = []
for(let i = 0; i<input.length; i++){
if(re.test(input[i])) result.push(i+1)
}
return result.length === 0 ? 'HE GO
T AWAY!' : result.join(' ')
}
console.log(solution(input))
각 예제 케이스는 출력이 정답과 동일한데 틀린 이유를 모르겠다..
RegExp.prototype.test()
- test() 메서드는 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환한다.
- 패턴이 문자열 내에 존재하는지에 대한 여부를 알아보고자 할 때 test()를 사용한다. 일치의 위치 인덱스, 또는 일치하지 않으면 -1을 반환하는 String.prototype.search()와 달리 test()는 불리언을 반환한다.
regexObj.test(str)
String.prototype.search()
- search() 메서드는 정규 표현식과 이 String 객체간에 같은 것을 찾기 위한 검색을 실행한다.
str.search(regexp)