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