Algorithms

[프로그래머스] java 언어기초 3일차

chillmyh 2023. 11. 25. 19:26

3-1

// 문자열 my_string이 매개변수로 주어집니다.
// my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.

 

제출 답안

public class cote3_1 {
    public String solution(String my_string) {
        String answer = "";

        for (int i=my_string.length()-1; i>=0; i--) {
            answer += my_string.charAt(i);
        }

        return answer;
    }
}

 

my_string의 문자열을 뒤에서부터 새로 값을 정하기 위해

for문을 사용하여 legth-1(마지막인덱스번호) 부터 1씩 index 0까지 줄여가면서 각 index에 해당하는 my_string의 문자열의 char 하나씩 answer에 더해줬다.


 

3-2 

// 문자열 my_string과 문자 letter이 매개변수로 주어집니다.
// my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

1번째 제출 답안

반복문과 조건문을 이용한 풀이

public class cote3_2 {
    public String solution(String my_string, String letter) {
//        return my_string.replaceAll(letter, "");

        String answer = "";

        for (int i=0; i < my_string.length(); i++) {
            if (my_string.charAt(i) != letter.charAt(0)) {
                answer += my_string.charAt(i);
            }
        }

        return answer;
    }
}

입력 예시가 f, B와 같은 한글자씩들밖에 없었기 때문에 letter.charAt(0)을 적용할 수 있었다.

 

 

2번째 제출 답안

        String answer = "";

        answer = my_string.replaceAll(letter, "");

        return answer;

 

-> 한줄로 바꿀 수 있다

 

return my_string.replaceAll(letter, "");

 


3-3

// 문자열 my_string과 정수 n이 매개변수로 주어질 때, 
// my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

 

1번째 제출 답안

public class cote3_3 {
    class Solution {
        public String solution(String my_string, int n) {
            String answer = "";
            for (int i=0; i<my_string.length(); i++) {
                for (int j = 0; j<n; j++) {
                    answer += my_string.charAt(i);
                }
            }
            return answer;
        }
    }
}

 

2중 반복문으로 n값에 대한 index로 j를 추가로 설정해줘서

n번째가 되기전까지 i번째 my_string.charAt을 answer에 더해줬다.


 

3-4

// 머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 
// 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 
// 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 
// return 하도록 solution 함수를 완성해주세요.

 

return message.length()*2;

 

 


3-5

// 영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다.
// 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

1번째 답안 제출

public class cote3_5 {
    public String solution(String my_string) {
        String answer = "";

        for (int i=0; i<my_string.length(); i++) {
            char checkChar = my_string.charAt(i);
            if (checkChar != 'a' && checkChar != 'e' && checkChar != 'i' && checkChar != 'o' && checkChar != 'u' ) {

                answer += checkChar;
            }
        }
        return answer;
    }
}

조건문과 반복문을 사용해서 어거지로 풀긴했는데 굉장히 비효율적임..

 

 

2번째 답안 제출

public class cote3_5 {
    public String solution(String my_string) {
        return my_string.replaceAll("[aeiou]", "");
    }
}

replace와 replaceAll 이라는 메서드가 있는지 몰랐는데.. 이렇게하면 엄청 간단하게 구현가능했음.

메서드들 종류랑 구조 다시한번 공부하기..