public String solution(String s){
    String answer = "";

    for(int i=0; i<4; i++) {
        String temp = s.substring(0, 7).replace('#', '1').replace('*', '0');
        // 문자를 잘라주고, 1. 이진수로 바꿔준다.

        int num = Integer.parseInt(temp, 2);
        // 2진수->10진수

        answer += (char) num;
        // 아스키코드 변환 int형을 char으로 강제변환

        s = s.substring(7);
        // 앞에 문자 자르기

    }

    return answer;
}
public int[] solution(String s, char t){
    int[] answer = new int[s.length()];
    int p = Integer.MAX_VALUE;

    for(int i=0; i<s.length(); i++){
        char ch = s.charAt(i);
        if(ch==t){ // 동일하면 거리 0
            p=0;
            answer[i] = p;
        } else { // 동일하지 않을 경우
            p++; // 거리 증가
            answer[i] = p;
        }
    }

    return answer;
}
public String solution(String str){
    String answer = "YES";
    str = str.toLowerCase();

    for(int i=0; i<str.length()/2; i++){
        char leftElement = str.charAt(i);
        char rightElement = str.charAt(str.length()-i-1);
        if(leftElement!=rightElement){
            answer = "NO";
            break;
        }
    }

    return answer;
}

 

정규 표현식

- 알파벳 제외하고 모두 제거하기

[^A-Z]

// 정규 표현식 : 특수 문자 제거 [^A-Z]
str = str.toUpperCase().replaceAll("[^A-Z]", "");

기존 풀이 방법

public class Solution {
    static ArrayList<Character> list = new ArrayList<>();
    public String solution(String str){
        String answer = "";
        StringBuilder sb = new StringBuilder();

        for(int i=0; i<str.length(); i++){
            char element = str.charAt(i);

            if(!list.contains(element)){
                list.add(element);
                sb.append(element);
            }
        }
        answer = sb.toString();
        return answer;
    }

    public static void main(String[] args) {
        Solution T = new Solution();
        System.out.println(T.solution("ksekkset"));
    }
}

 

새로운 풀이 방법

- indexof를 사용해서 제일 특정 문자의 첫 번째 인덱스를 받아와서 출력해준다.

for(int i=0; i<str.length(); i++){
    char element = str.charAt(i);
    if(str.indexOf(element)==i){
        answer += element;
    }
}

 

public class Solution {
    public String solution(String str){
        String answer = "";
        char[] arr = str.toCharArray();
        int lp =0, rp = str.length()-1;

        while(lp<rp){
            if(!Character.isAlphabetic(arr[lp])){
                lp++;
            } else if(!Character.isAlphabetic(arr[rp])){
                rp--;
            } else { // 둘 다 알파벳
                char temp = arr[lp];
                arr[lp] = arr[rp];
                arr[rp] = temp;
                lp++;
                rp--;
            }
        }
        answer = String.valueOf(arr);
        return answer;
    }

    public static void main(String[] args) {
        Solution T = new Solution();
        System.out.println(T.solution("a#b!GE*T@s"));
    }
}
String element = word[i];
String reverse = new StringBuilder(element).reverse().toString();

 

char 자료형 변환

t = Character.toUpperCase(t);
t = Character.toLowerCase(t);

 

string 자료형 변환

str = str.toUpperCase();
str = str.toLowerCase();

 


대소문자 확인 

Character.isLowerCase(ch);
Character.isUpperCase(ch);

유클리드 호제법

- 두 다항식의 최대 공약수를 구하는 방법

- 두 양의 정수 a,b(a>b)에 대하여 a = bq + r (0<=r<=b)이면, a,b의 최대 공약수는 b,r의 최대 공약수와 같다.

 

최대 공약수 : 두 자연수의 공통된 약수 중 가장 큰 수

최대 공배수 : 두 자연수의 공통된 배수 중 가장 작은 수

 

최대 공약수(GCD) 최대 공배수(LCM) 코드

- while문으로 b가 0이 될때까지 a%b=c

ex. a=72, b=30

GCD(72,30) // 72%30 = 12

-> (b->a, c->b으로 변경해준다.)

-> GCD(30, 12) = 30%12 = 6

-> GCD(12,6) = 0

-> b인 6이 72와 30의 최대 공약수가 된다.

 

최대 공배수 = 두 수의 곱 / 두 수의 최대공약수

= a * b / GCD(a,b)

ex. GCD(72,30) 에서 최대공약수는 6 이다.

-> 72*30 / 6 = 360

72와 30의 최대 공배수는 360

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];

        answer[0] = GCD(n,m);
        answer[1] = lcm(n,m);
        return answer;
    }

    public static int GCD(int a, int b){ // 최대 공약수
        while(b!=0){
            int c = a%b;
            a=b;
            b=c;
        }
        return a;
    }

    public static int lcm(int a, int b){ // 최대 공배수
        return a*b / GCD(a,b);
    }
}

+ Recent posts