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

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

남건욱 2023. 10. 19. 09:55
반응형
178. 접두사인지 확인하기

문제

class Solution {
    public int solution(String my_string, String is_prefix) {
        if(my_string.startsWith(is_prefix)){
            return 1;
        } else{
            return 0;
        }
    }
}

<작성한 코드>

startsWith() 함수를 사용했다. startsWith() 함수는 문자열이 특정 문자열이나 접두사로 시작하는지 체크해 주는 함수이다. if에 넣어서 참이면 1을 반환하고 참이 아니라면 0을 반환해 줬다.

 

 

 

179. 문자열의 앞의 n글자

문제

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

<작성한 코드>

간단한 문제였다. 0부터 n만큼 반복해 주고 answer에 문자를 저장하고 반환하였다.

 

 

 

180. 접미사인지 확인하기

문제

class Solution {
    public int solution(String my_string, String is_suffix) {
        if(my_string.endsWith(is_suffix)){
            return 1;
        } else{
            return 0;
        }
    }
}

<작성한 코드>

endsWith를 통해서 접미사인지 체크했다. 접미사라면 1을 반환하고 접미사가 아니라면 0을 반환했다.

 

 

 

181. 접미사 배열

문제

import java.util.*;

class Solution {
    public String[] solution(String my_string) {
        String[] answer = new String[my_string.length()];
        
        for(int i=0; i<my_string.length(); i++){
            answer[i] = my_string.substring(i);
        }
        
        Arrays.sort(answer);
        
        return answer;
    }
}

<작성한 코드>

간단한 문제였다. my_string의 길이만큼 answer의 크기를 지정해 주고 for문을 사용해서 answer에 substring을 사용해서 모든 접미사를 넣어줬다. 그 뒤 Arrays.sort를 사용해서 오름차순 정렬을 해주고 반환하였다.

 

 

 

182. 문자열의 뒤의 n글자

문제

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

<작성한 코드>

간단한 문제였다. 시작점은 my_string의 길이에서 n만큼 빼준값에서 시작해 주고 my_string의 길이만큼 반복해 줬다. answer에 값을 차례로 대입하고 반환해 주면 끝난다.

 

 

 

183. 부분 문자열 이어 붙여 문자열 만들기

문제

class Solution {
    public String solution(String[] my_strings, int[][] parts) {
        String answer = "";
        
        for(int i = 0; i < my_strings.length; i++) {
            int a = parts[i][0];
            int b = parts[i][1];
            for(int j=a; j<=b; j++) {
                answer += my_strings[i].charAt(j);
            }
        }
        
        return answer;
    }
}

<작성한 코드>

for문을 사용해서 my_strings의 길이만큼 반복시켰다. 그리고 parts [i][0], parts [i][1]의 값을 시작과 끝 값으로 a, b에 넣어줬다. 그 뒤 중첩 for문으로 a부터 b까지 반복하도록 하고 answer에 my_string의 i번째 원소의 j번째 원소를 차례대로 대입해 주고 answer을 반환하였다.

 

 

 

184. 배열 만들기 5

문제

import java.util.*;

class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        List<Integer> list = new ArrayList<>();
        
        for(int i=0; i<intStrs.length; i++){
            String subStrs = intStrs[i].substring(s, s+l);
            int num = Integer.parseInt(subStrs);
            
            if(num > k){
                list.add(num);
            }
        }
        
        int[] answer = new int[list.size()];
        for(int i=0; i<list.size(); i++){
            answer[i] = list.get(i);
        }
        
        return answer;
    }
}

<작성한 코드>

for문을 사용해서 intStrs의 길이만큼 반복해 줬다. 그 뒤 내부에서는 String형 변수하나를 만들고 intStrs [i] 번째를 substring을 사용해서 s번째부터 s+l이전까지 잘라서 대입해 줬다. 대입한 subStrs값을 정수형으로 변환한 뒤 num이 k보다 크면 list에 추가해 줬다. 그다음 list의 값을 answer에 대입해 주고 반환하였다.

 

 

 

185. 문자열 여러 번 뒤집기

문제

class Solution {
    public String solution(String my_string, int[][] queries) {
        String answer = "";
        char[] ch = my_string.toCharArray();
        
        for(int i=0; i<queries.length; i++){
            int s = queries[i][0];
            int e = queries[i][1];
            while(s < e){
                char temp = ch[s];
                ch[s] = ch[e];
                ch[e] = temp;
                s++;
                e--;
            }
        }
        
        for(int i=0; i<ch.length; i++){
            answer += ch[i];
        }
        
        return answer;
    }
}

<작성한 코드>

ch변수에 my_string을 문자형으로 대입했다. 그 뒤 for문을 통해서 queries의 길이만큼 반복시켜 주고 s, e에 범위를 대입해 줬다. while문을 사용해서 s가 e보다 작을 때 반복하도록 했고 s와 e의 자리를 바꿔주며 s는 ++ e는 --해줬다. 그 뒤 answer에 ch값을 집어넣어 주고 반환하였다.

 

 

186. 9로 나눈 나머지

문제

class Solution {
    public int solution(String number) {
        int answer = 0;
        int sum = 0;
        String[] result = number.split("");
        
        for(int i=0; i<result.length; i++){
            sum += Integer.parseInt(result[i]);
        }
        
        answer = sum%9;
        
        return answer;
    }
}

<작성한 코드>

문제에 나온 대로 그대로 해줬다. 문자열 배열을 선언해 준 뒤 number의 값을 대입해 줬다. 그 뒤 result의 길이만큼 반복해 주고 sum에 각 원소들을 정수형으로 바꿔서 더해줬다. 그 뒤 sum을 9로 나눈 나머지값을 answer에 대입해 주고 반환하였다.

 

 

 

187. 글자 이어 붙여 문자열 만들기

문제

class Solution {
    public String solution(String my_string, int[] index_list) {
        String answer = "";
        char[] ch = my_string.toCharArray();
        
        for(int i=0; i<index_list.length; i++){
            char a = ch[index_list[i]];
            answer += a;
        }
        
        return answer;
    }
}

<작성한 코드>

ch안에 my_string을 문자형으로 넣어줬다. 그 뒤 index_list의 길이만큼 반복해 준 뒤 char형 변수 a에 ch [값]의 원소를 꺼내서 넣어줬다. 그리고 그 값을 answer에 넣어주고 반환하였다.

반응형
프로필사진

남건욱's 공부기록