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

[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 1 (7~14번 문제풀이) / Level 0 (224/224)

남건욱 2023. 10. 23. 22:32

목차

    반응형
    7. 문자열 내 마음대로 정렬하기

    문제

    import java.util.*;
    
    class Solution {
        public String[] solution(String[] strings, int n) {
            String[] answer = {};
            List<String> list = new ArrayList<>();
            
            for(int i=0; i<strings.length; i++){
                list.add(strings[i].charAt(n) + strings[i]);
            }
            Collections.sort(list);
            
            answer = new String[list.size()];
            for(int i=0; i<list.size(); i++){
                answer[i] = list.get(i).substring(1, list.get(i).length());
            }
            
            return answer;
        }
    }

    <작성한 코드>

    list를 하나 만들어줬다. 그 뒤 for문을 사용해서 list에 값을 넣어줬다. string [i]. charAt(n)과 strings [i]를 넣어줬는데 첫 번째 값은 n번째 원소가 될 거고 그 뒤값은 string [i]의 문자열이 될 것이다. 그래서 각 n번째 자리의 원소값이 문자열들의 제일 앞에 들어온다. 그 뒤 list를 Collections.sort를 사용해서 오름차순으로 정렬시켜 준다. 그 뒤 answer에 list의 길이만큼 배열을 만들어주고 for문을 사용해서 list.get(i)의 첫 번째 원소를 제외한 두 번째 값부터 마지막값까지 넣어주고 반환하면 된다.

     

     

     

    8. 문자열 내 p와 y의 개수

    문제

    class Solution {
        boolean solution(String s) {
            boolean answer = true;
            int p = 0, y = 0;
    
            for(int i=0; i<s.length(); i++){
                if(s.charAt(i) == 'p' || s.charAt(i) == 'P'){
                    p++;
                } else if(s.charAt(i) == 'y' || s.charAt(i) == 'Y'){
                    y++;
                }
            } 
            
            if(p != y) answer = false;
    
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제였다. for문 속에서 if문을 사용해서 p와 P일때는 p의 값을 증가시켰고, y와 Y일 때는 y의 값을 증가시켰다. for문이 끝난 뒤 if문을 사용해서 p와 y값을 비교해서 다르다면 answer에 false를 넣어주고, 아니라면 처음에 초기화했던 true가 그대로 반환될 것이다.

     

     

     

    9. 문자열 내림차순으로 배치하기

    문제

    import java.util.*;
    
    class Solution {
        public String solution(String s) {
            String answer = "";
            char[] ch = s.toCharArray();
            Arrays.sort(ch);
            
            for(int i=ch.length-1; i>=0; i--){
                answer += ch[i];
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제였다. 문자열 s를 char형으로 변환시켜 배열로 저장한 뒤 Arrays.sort를 사용해서 오름차순으로 정렬했다. 그 뒤 for문을 사용해서 문자열의 끝부터 처음까지 역순으로 answer에 저장해 주고 반환하였다.

     

     

     

    10. 문자열 다루기 기본

    문제

    class Solution {
        public boolean solution(String s) {
            boolean answer = true;
            
            if(!(s.length() == 4 || s.length() == 6)) answer = false;
            
            for(int i=0; i<s.length(); i++){
                char ch = s.charAt(i);
                if((ch >= 'a' && ch <= 'z') || (ch>= 'Z' && ch<= 'Z')){
                    return false;
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제였다. s의 길이가 4나 6이 아니라면 answer를 false로 하였고, 숫자가 포함되어 있는지 체크하기 위해 for문을 사용해서 원소 하나하나를 비교해 줬다. a ~ A, z ~ Z가 들어간다면 false를 반환하였다.

     

     

     

    11. 서울에서 김서방 찾기

    문제

    class Solution {
        public String solution(String[] seoul) {
            String answer = "";
            int num = 0;
            
            for(int i=0; i<seoul.length; i++){
                if(seoul[i].equals("Kim")){
                    num = i;
                    break;
                }
            }
            
            answer = "김서방은 "+ num +"에 있다";
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제였다. for문으로 원소들과 비교를 해서 Kim과 같은 문자열이 있으면 변수 num에 i를 넣어주고 for문을 멈춘다. 그 뒤 answer에 "김서방은" + num + "에 있다"를 넣어주고 반환하였다.

     

     

     

    12. 소수 찾기

    문제

    class Solution {
        public int solution(int n) {
            int answer = 0;
            
            for(int i=2; i<=n; i++){
                int cnt = 0;
                for(int j=2; j*j<=i; j++){
                    if(i%j == 0) {
                        cnt++;
                        break;
                    }
                }
                if(cnt == 0){
                    answer ++;
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    소수를 찾으면 되는 문제다. 중첩 for문을 사용해서 i는 2부터 n까지 반복해 주고 내부의 for문에서는 j는 2부터 j*j까지 반복해 줬다. j*j를 사용한 이유는 소수가 아니라면 그 수의 약수중 최솟값은 제곱근보다 작거나 같아야 하기 때문에 j를 i까지 돌리지 않고 j*j까지만 반복했다. 그 뒤 약수가 0개라면 answer에 1을 더해주고 answer을 반환했다.

     

     

     

    13. 수박수박수박수박수박수?

    문제

    class Solution {
        public String solution(int n) {
            String answer = "";
            
            for(int i=0; i<n; i++){
                if(i%2 == 0){
                    answer += "수";
                } else{
                    answer += "박";
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제다. for문을 사용해서 차례대로 수, 박을 넣어주고 answer을 반환했다.

     

     

     

     

    14. 문자열을 정수로 바꾸기

    문제

    class Solution {
        public int solution(String s) {
            int answer = 0;
            
            answer = Integer.parseInt(s);
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제다. s를 정수형으로 변환해서 answer에 대입하고 반환해 주면 된다.

    반응형
    프로필사진

    남건욱's 공부기록