본문 바로가기

IT/알고리즘

[코딜리티] - Lesson 5. GenomicRangeQuery

안녕하세요 남갯입니다.








public int[] solution(String S, int[] P, int[] Q) {
// write your code in Java SE 8
int[] result = new int[P.length];

char[] s = S.toCharArray();
for(char a : s){

}

S.replaceAll("A", "1");
S.replaceAll("C", "2");
S.replaceAll("G", "3");
S.replaceAll("T", "4");
int length = S.length();
int number = Integer.valueOf(S);

for (int i = 0; i < P.length; i++) {
result[i] = (int) ((number % Math.pow(10, length - P[i])) / Math.pow(10, length - Q[i]));
}

for (int i = 0; i < result.length; i++) {
int intResult = 0;
int n = result[i];
while (n != 0) {
intResult = (result[i] % 10);
n /= 10;
}
result[i] = intResult;
}

return result;
}



public int[] solution(String S, int[] P, int[] Q) {
// write your code in Java SE 8
int[] result = new int[P.length];
for (int i = 0; i < P.length; i++) {
String str = S.substring(P[i], Q[i] + 1);
if (str.contains("A")) {
result[i] = 1;
} else if (str.contains("C")) {
result[i] = 2;
} else if (str.contains("G")) {
result[i] = 3;
} else if (str.contains("T")) {
result[i] = 4;
}
}
return result;
}



- 회의후 풀이방식


나는 O(M*N)의 시간때문에 효율성에서 실패했다.


A G C T 

의 각각의 배열별 숫자를 지정한다.

  AGCCTAGC

A11111222

G01111122   

C00122223

T00001111


각 배열의 변경된 앞뒤의 변경 여부를 구한다