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