프로그래머스 문제풀이/알고리즘 (JAVA)

[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (140~149번 문제풀이)

남건욱 2023. 10. 16. 17:08

목차

    반응형
    140. 공백으로 구분하기 2

    문제

    class Solution {
        public String[] solution(String my_string) {
            String[] answer = my_string.trim().split("\\s+");
            return answer;
        }
    }

    <작성한 코드>

    my_string에. trim()을 사용해서 문자열 양끝의 공백을 제거해 준다. split안에 "\\s+"를 사용했는데 이것은 정규식이다. 하나 이상의 공백이 있으면 그걸 기준으로 나누게 한다. 저장된 result를 반환해 준다.

     

     

     

     

    141. 공백으로 구분하기 1

    문제

    class Solution {
        public String[] solution(String my_string) {
            String[] answer = my_string.split(" ");
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제다. 공백을 기준으로 split() 해주고 반환하면 된다.

     

     

     

     

    142. ad 제거하기

    문제

    import java.util.*;
    
    class Solution {
        public String[] solution(String[] strArr) {
            List<String> list = new ArrayList<>();
            
            for(int i=0; i<strArr.length; i++){
                if(!strArr[i].contains("ad")){
                    list.add(strArr[i]);
                }
            }
            
            String[] answer = new String[list.size()];
            for(int i=0; i<list.size(); i++){
                answer[i] = list.get(i);
            }
            
            return answer;
        }
    }

    <작성한 코드>

    리스트 형태의 배열을 하나 선언해 준 뒤 strArr내부의 원소들의 값을 비교했다. ad를 포함하고 있지 않다면 list에 그 값을 추가해 준다. 추가가 되었다면 answer의 크기를 list길이만큼 선언해 준 뒤, for문을 사용해서 answer에 list의 값을 대입해 주고 반환하였다.

     

     

     

    143. 문자열이 몇 번 등장하는지 세기

    문제

    class Solution {
        public int solution(String myString, String pat) {
            int answer = 0;
            
            for(int i=0; i<=myString.length()-pat.length(); i++){
                String sub = myString.substring(i, i + pat.length());
                if(sub.contains(pat)){
                    answer ++;
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    for문의 반복 횟수는 myString의 길이에서 pat의 길이를 뺀 만큼 반복해 줬다. 왜냐면 myString의 길이만큼 돌리게 되면 myString의 길이 이상까지 조회하게 될 것이기 때문에 이렇게 설정해 줬다. 그 뒤 substring을 이용하여 문자열을 잘라서 비교했다. i부터 i+pat의 길이까지 더해서 비교해주고 sub안에 pat이 포함된다면 answer을 더해줬다. i+pat.length()을 해준이유는 banana와 ana처럼 주어졌을때 문자열 끝까지 비교를 하게된다면 중복되는 횟수가 생기기 때문에 i+pat.length()로 설정해줬다.

     

     

     

    144. 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

    문제

    class Solution {
        public String solution(String myString, String pat) {
            String answer = "";
            int idx = myString.lastIndexOf(pat);
            
            answer = myString.substring(0, idx) + pat;
            
            return answer;
        }
    }

    <작성한 코드>

    int형 정수 idx를 선언하고 myString.lastIndexOf(pat)을 사용하여 값을 대입해 줬다.. lastIndex()는 문자열에서 마지막으로 등장하는 ( ) 안의 값의 인덱스를 반환해 주는 함수이다. answer에는 myString을 0번부터 idx번까지 가져오고 pat을 마지막으로 더해주면 가장 긴 부분문자열이 된다.

     

     

     

    145. 특정한 문자를 대문자로 바꾸기

    문제

    class Solution {
        public String solution(String my_string, String alp) {
            String answer = "";
            
            for(int i=0; i<my_string.length(); i++){
                char ch = my_string.charAt(i);
                if(ch == alp.charAt(0)){
                    ch = Character.toUpperCase(ch);
                    answer += ch;
                } else{
                    answer += ch;
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    my_string의 길이만큼 반복문을 돌려줬다. 그 뒤 ch에는 원소 하나하나 값을 넣어줬고 만약 이 값이 alp의 값과 일치하면 ch를 Character.toUpperCase()를 사용해서 대문자로 변환해 줬다. 변환해 준 값을 answer에 넣어준다. 만약 일치하지 않는다면 그대로 answer에 넣어줬다. answer을 반환해 주고 종료했다.

     

     

     

    146. A 강조하기

    문제

    class Solution {
        public String solution(String myString) {
            String answer = myString.toLowerCase();
            answer = answer.replace('a', 'A');
            
            return answer;
        }
    }

    <작성한 코드>

    A가 아니라면 전부 소문자로 출력하면 된다. 따라서. toLowerCase()를 사용해서 문자열을 모두 소문자로 변경시킨 뒤 replace('a', 'A')를 사용해서 소문자 a들만 A로 변경시켜 주고 반환하였다.

     

     

     

    147. 배열에서 문자열 대소문자 변환하기

    문제

    class Solution {
        public String[] solution(String[] strArr) {
            String[] answer = new String[strArr.length];
            
            for(int i=0; i<strArr.length; i++){
                if(i%2 == 1){
                    answer[i] = strArr[i].toUpperCase();
                } else{
                    answer[i] = strArr[i].toLowerCase();
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제다. strArr의 길이만큼 배열을 선언해 주고 반복문으로 돌렸다. 홀수일 때는 toUpperCase()를 사용해서 전부 대문자로 넣어줬고, 짝수일 때는 toLowerCase()를 사용해서 전부 소문자로 넣어줬다.

     

     

     

    148. 소문자로 바꾸기

    문제

    class Solution {
        public String solution(String myString) {
            String answer = myString.toLowerCase();
            return answer;
        }
    }

    <작성한 코드>

    toLowerCase()를 사용해서 소문자로 바꿔주면 끝난다.

     

     

     

    149. 대문자로 바꾸기

    문제

    class Solution {
        public String solution(String myString) {
            String answer = myString.toUpperCase();
            return answer;
        }
    }

    <작성한 코드>

    이것도 간단한 문제다.. toUpperCase()를 사용해서 전부 대문자로 바꿔주면 된다.

    반응형
    프로필사진

    남건욱's 공부기록