- Published on
Codility - Genomic Range Query
- Author

- Name
- yceffort
Genomic Range Query
๋ฌธ์
DNA๋ A, C, G, T๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ, ์ด๋ ๊ฐ๊ฐ 1, 2, 3, 4๋ฅผ ๊ฐ๋ฅดํจ๋ค. ์ด๋ฌํ DNA๋ฅผ ๋ฆฌํดํ๋ S๊ฐ ์๊ณ , ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๊ฐ์ P์ Q๊ฐ ์๋ค.
S=CAGCCTA
P=[2, 5, 0]
Q=[4, 5, 6]
๊ฐ 0๋ฒ์งธ ์์๋ 2, 4๋ค. 2๋ฒ์งธ ~ 4๋ฒ์งธ DNA๋ GCC์ด๊ณ , ์ฌ๊ธฐ์ ์ ์ผ ์์ ๊ฐ์ C, ์ฆ 2๋ฅผ ๋ฆฌํดํ๋ค.
๊ฐ 1๋ฒ์งธ ์์๋ 5, 5๋ค. T ๋ฐ์ ์์ผ๋ฏ๋ก 2๋ฅผ ๋ฆฌํดํ๋ค.
๊ฐ 2๋ฒ์งธ ์์๋ 0, 6์ด๋ค. CAGCCT์ด๊ณ , ๊ฐ์ฅ ์์ ๊ฐ์ A๋ค. ์ฆ 1์ ๋ฆฌํดํ๋ค.
๋ต์ [2, 4, 1] ์ด๋ค.
ํ์ด
function solution(S, P, Q) {
const answers = []
for (let i = 0; i < P.length; i++) {
const slice = S.slice(P[i], Q[i] + 1)
if (slice.indexOf('A') !== -1) {
answers.push(1)
} else if (slice.indexOf('C') !== -1) {
answers.push(2)
} else if (slice.indexOf('G') !== -1) {
answers.push(3)
} else if (slice.indexOf('T') !== -1) {
answers.push(4)
}
}
return answers
}
- slice๋ฅผ ํ๊ณ , ์ต์ด์๋ ์ด๋ฅผ sortํด์ ํ ์คํธ ํ๋ ค๋ timeout์ด ๋ฌ๋ค.
- slice๋ฅผ ํ๊ณ , sliceํ ๋ฌธ์์ด์ ๋๋ฉด์ ์ฒดํฌํ๋ ์ญ์ timeout์ด ๋ฌ๋ค.
- slice ๋ ๋ฌธ์์ด์ ๊ทธ๋ฅ indexOf๋ฅผ ํ๊ธฐ๋ก ํ๋ค.