문자열이 들어간 배열의 유사도 확인하기
public int solution(String[] s1, String[] s2) {
int count = 0;
for (int i = 0; i < s1.length; i++) {
for (int j = 0; j < s2.length; j++) {
if (s1[i].equals(s2[j])) {
count++;
}
}
}
return count;
}
시간복잡도가 O(n^2)인 점만 빼면 깔끔하게 푼 듯하다.
숫자 찾기
public int solution(int num, int k) {
int lenOfNum = String.valueOf(num).length();
for (int i = 0; i < lenOfNum ; i++) {
int digit = (int)((num%(Math.pow(10, i+1))/Math.pow(10,i)));
if (digit == k) {
return lenOfNum-i;
}
}
return -1;
}
문제는 앞에서부터 조회해서 숫자가 중복되더라도 가장 앞에 있는 숫자를 기준으로 하는데, 위 코드는 뒤에서부터 조회하므로 틀린 대답이다. 이 점을 수정해야 한다.
public int solution(int num, int k) {
int index = -1;
int lenOfNum = String.valueOf(num).length();
for (int i = 0; i < lenOfNum ; i++) {
int digit = (int)((num%(Math.pow(10, i+1))/Math.pow(10,i)));
if (digit == k) {
index = lenOfNum-i;
}
}
return index;
}
앞에서부터 조회하게 바꾸기에는 코드를 다 갈아엎어야 할 것 같아서 index변수를 -1로 초기화 해놓고, 반복문 내에서 숫자의 위치를 초기화를 하도록 수정했다.
그리고 다른 풀이를 보려고 했는데 맨 위에 너무나도 간결하고 깔끔하며 창의적인 풀이가 있어 아래 참조한다.
더보기
class Solution {
public int solution(int num, int k) {
return ("-" + num).indexOf(String.valueOf(k));
}
}
문자열 소문자로 변환하고 오름차순으로 배열하기
public String solution(String my_string) {
String low = my_string.toLowerCase();
char[] sort = low.toCharArray();
int length = sort.length;
for (int i = 0; i < length - 1; i++) {
for (int j = 0; j < length - i - 1; j++) {
if (sort[j] > sort[j + 1]) {
char temp = sort[j];
sort[j] = sort[j + 1];
sort[j + 1] = temp;
}
}
}
String answer = new String(sort);
return answer;
}
sort를 쓰고 싶은 마음이 굴뚝같았지만 sort를 쓰면 너무 간단한 무제가 되어버리기에 sort를 나름대로 구현해 봤다.