프로그래머스 문제풀이/알고리즘 (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 공부기록