본문으로 건너뛰기
yceffort
PostsSeriesTagsAbout🧪 Research
EN

Tweaks

theme
accent palette
film grain
minimal mode
BACK TO INDEX
◆ ESSAY
--min
--year
KOoriginal

mailMail icongithubtwitter
yceffort
•
© 2026
•
https://yceffort.kr
BACK TO INDEX
◆ ESSAY

Codility - Genomic Range Query

avatar
yceffort
2020-06-23 · 2분
2min
2020year
KOoriginal
algorithmjavascript

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를 하기로 했다.

관련 글

  • #javascript#algorithm

    자바스크립트로 메모이제이션 구현하기

    까먹지 않게 기억해두기

    2020-11-23·1분
  • #javascript#algorithm

    자바스크립트로 구현해보는 다양한 정렬

    ## 거품(버블)정렬 - 가까운 두 원소를 비교해서 정렬하는 방식이다. - `O(N^2)` - 코드가 단순하고 구현하기 쉽다 - 느리다. ![bubble-sort](https://upload.wikimedia.org/wikipedia/commons/3/37/Bubble_sort_animation.gif) ```javascript function bub...

    2020-07-01·3분
  • #algorithm#javascript

    Codility - Nesting

    ## Nesting ### 문제 `(`와 `)`로 이루어진 문자열이 있다. 이 문자열의 `(` `)` 짝이 맞게 이루어져 있는지 확인하라. ### 풀이 ```javascript function solution(S) { const split = S.split('') const stack = [] for (let i of split...

    2020-06-25·1분
  • #algorithm#javascript

    Codility - Missing Integer

    ## Missing Integer ### 문제 주어진 배열 A에 빠져 있는 가장 작은 양의 정수를 구하시오 ``` A=[1, 3, 6, 4, 1, 2] 이라면 답은 5 A=[1, 2, 3] 이라면 답은 4 A=[-1, -3] 이라면 답은 1 ``` ### 풀이 ```javascript function solution(A) { // 배열 길...

    2020-06-24·1분

새 글을 놓치고 싶지 않으시다면 RSS로 구독해 주세요.

RSS 구독 →

yceffort — 프론트엔드 엔지니어입니다. 발표·기술 자문·기고 문의는 이곳에서 받고 있습니다.

← Back to the blogIssue on GitHub →