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

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

남건욱 2023. 10. 18. 17:51

목차

    반응형
    170. 가까운 1 찾기

    문제

    class Solution {
        public int solution(int[] arr, int idx) {
            int answer = -1;
            
            for(int i=idx; i<arr.length; i++){
                if(arr[i] == 1){
                    answer = i;
                    break;
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제다. i는 idx부터 arr의 길이까지 반복시켜 줬고 arr [i]가 1이면 answer에 i값을 넣어줬다. 그 후 answer을 반환시켜 주고 종료했다.

     

     

     

    171. 카운트 다운

    문제

    class Solution {
        public int[] solution(int start, int end_num) {
            int[] answer = new int[start - end_num + 1];
            int idx = 0;
            
            for(int i=start; i>=end_num; i--){
                answer[idx++] = start--;
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제다. answer의 0번째부터 start값부터 1씩 뺀 값을 차례로 넣어주고 반환하면 된다.

     

     

     

    172. 글자 지우기

    문제

    class Solution {
        public String solution(String my_string, int[] indices) {
            String answer = "";
            StringBuilder my_string2 = new StringBuilder(my_string);
    
            for (int i : indices) {
                my_string2.setCharAt(i, ' ');
            }
    
            answer = my_string2.toString().replaceAll(" ", "");
            return answer;
        }
    }

    <작성한 코드>

    StringBuilder 변수하나를 만들어줬다. 그 뒤 foreach문을 사용해서 i번째에 있는 문자를 공백문자로 변경시켰다. 그 뒤 my_string2를 배열형식으로 변환한 뒤 replaceAll을 사용해서 공백을 지워주고 반환하였다.

     

     

     

    173. 배열 만들기 1

    문제

    class Solution {
        public int[] solution(int n, int k) {
            int[] answer = new int[n/k];
            int cnt = 0;
            
            for(int i=1; i<=n; i++){
                if(i%k == 0) answer[cnt++] = i;
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제다. i를 k로 나눠서 나머지가 0이되면 answer에 추가했다. 그리고 반환해 주면 된다.

     

     

     

    174. 문자 개수 세기

    문제

    class Solution {
        public int[] solution(String my_string) {
            int[] answer = new int[52];
            
            for(char ch : my_string.toCharArray()){
                if(ch >= 'A' && ch <= 'Z'){
                    answer[ch - 'A']++;
                } else{
                    answer[ch - 'a' + 26]++;
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    배열의 길이는 52개이므로 먼저 answer를 선언해줬다. 그 뒤 foreach문으로 문자열 my_string을 문자형으로 바꿔주고 하나씩 대입해 준다. ch가 대문자이면 answer [문자 - 'A']를 해준 포인트에 +1을 해주고 소문자라면 answer [ch - 'a'를 해준 뒤 소문자는 26번째 인덱스부터 시작하니 +26을 해주고 그 부분에 1을 증가시켰다. 그 뒤 answer을 반환하였다.

     

     

     

    175. qr code

    문제

    class Solution {
        public String solution(int q, int r, String code) {
            String answer = "";
            
            for(int i=0; i<code.length(); i++){
                if(i%q == r) answer += code.charAt(i);
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제다. 반복문으로 모든원소를 비교하고 if문으로 i를 q로 나눴을 때 나머지가 r일 때만 answer에 더해줬다. 그 뒤 반환해 줬다.

     

     

     

    176. 세로 읽기

    문제

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

    <작성한 코드>

    인덱스는 0부터 시작하니 시작점을 c-1로 지정해 줬다. my_string의 길이까지 반복해 주었고 i의 증가량은 m만큼 증가해 줬다. 그 뒤 answer을 반환해 줬다.

     

     

    177. 문자열 뒤집기

    문제

     

    class Solution {
        public String solution(String my_string, int s, int e) {
            String answer ="";
            char[] ch = my_string.toCharArray();
            
            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을 문자형으로 변환해서 넣어줬다. 그 후 while문으로 s와 e의 값을 변경해 주고 s는 1씩 증가, e는 1씩 감소시켜 줬다. 그 뒤 ch의 값을 answer에 넣고 반환해 주었다.

    반응형
    프로필사진

    남건욱's 공부기록