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

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

남건욱 2023. 9. 30. 06:31
반응형
82. 편지

문제

class Solution {
    public int solution(String message) {
        int answer = 0;
        
        answer = 2 * message.length();
        
        return answer;
    }
}

<작성한 코드>

풀면서도 의심했다. 그냥 2만 곱해주면 됐다. 쉬어가기 문제인가 보다.

 

 

 

 

 

83. 가장 큰 수 찾기

문제

import java.util.*;

class Solution {
    public int[] solution(int[] array) {
        int[] answer = new int[2];
        int max = array[0];
        answer[0] = array[0];
        answer[1] = 0;
        
        
        for(int i=1; i<array.length; i++){
            if(array[i] > max){
                max = array[i];
                answer[0] = max;
                answer[1] = i;
            }
        }
        
        return answer;
    }
}

<작성한 코드>

크기를 비교해야 하기 때문에 0번째엔 array의 첫 값, 1번째엔 현재원소위치를 대입 후 for문으로 비교를 해줬다. array [i]가 max보다 크면 max값을 교환해 줬다. 그 후 반환해 줬다.

 

 

 

 

 

84. 문자열 계산하기

문제

class Solution {
    public int solution(String my_string) {
        String[] result = my_string.split(" ");
        int answer = Integer.parseInt(result[0]);

        for (int i = 1; i < result.length; i += 2) {
            String op = result[i];
            int opInt = Integer.parseInt(result[i + 1]);

            switch (op) {
                case "+":
                    answer += opInt;
                    break;
                case "-":
                    answer -= opInt;
                    break;
            }
        }

        return answer;
    }
}

<작성한 코드>

my_string을 공백기준으로 나눠서 String형 배열에 넣어줬다. 그 후 answer에 첫 번째 값을 result의 첫 번째 값으로 초기화해 준 뒤 반복문으로 1부터 result의 길이만큼 반복해 줬다. i를 2씩 더하는 이유는 숫자 사이에 기호가 있을 거 기 때문에 2씩 더해서 기호만 따로 뺴주고 계산해 줬다. op값이 +면 다음에 나올 수를 현재 answer값에 더해주고 -면 다음에 나올 수를 현재 answer값에서 빼줬다.

 

 

 

 

 

85. 배열의 유사도

문제

class Solution {
    public int solution(String[] s1, String[] s2) {
        int answer = 0;
        
        for(int i=0; i<s1.length; i++){
            for(int j=0; j<s2.length; j++){
                if(s1[i].equals(s2[j])) answer++;
            }
        }
        
        return answer;
    }
}

<작성한 코드>

간단한 문제였다. s1와 s2를 모두 돌며 같은 수가 있으면 answer에 ++를 해주고 반환하였다.

 

 

 

 

86. 숫자 찾기

문제

class Solution {
    public int solution(int num, int k) {
        int answer = -1;
        String result = Integer.toString(num);
        
        for(int i=0; i<result.length(); i++){
            if(result.charAt(i) == (char)(k+'0')){
                answer = i+1;
                return answer;
            }
        }
        
        return answer;
    }
}

<작성한 코드>

기본값을 -1로 설정해 줬다. 그리고 num을 string으로 변경해 주고 그 길이만큼 for문으로 돌렸다. 각 수중 k와 같은 값이 있으면 answer에 i+! 을 해주고 answer를 리턴하였다.(char)(k+'0')을 해준 이유는 k는 int형이니 문자형으로 바꾸고 '0'을 더해서 비교가 가능하도록 했다.

 

 

 

87. n의 배수 고르기

문제

import java.util.*;

class Solution {
    public int[] solution(int n, int[] numlist) {
        List<Integer> list = new ArrayList<>();
        
        for(int i=0; i<numlist.length; i++){
            if(numlist[i] % n == 0) list.add(numlist[i]);
        }
        
        int[] answer = new int[list.size()];
        
        for(int i=0; i<list.size(); i++){
            answer[i] = list.get(i);
        }
        
        
        return answer;
    }
}

<작성한 코드>

정수형 list를 하나 만들어줬다. 그 후 for문으로 n의 배수일 때 list에 추가했고 이 list의 길이만큼 정수형 배열 answer를 선언해서 값을 넣어줬다.

 

 

 

88. 자릿수 더하기

문제

class Solution {
    public int solution(int n) {
        int answer = 0;
        String result = Integer.toString(n);
        
        for(int i=0; i<result.length(); i++){
            answer += Character.getNumericValue(result.charAt(i));
        }
        
        return answer;
    }
}

<작성한 코드>

수를 string형식으로 변환 후 길이만큼 반복해 줬다. answer에 각 자릿수의 문자를 숫자로 바꾼 후 더해주고 반환해 주었다.

반응형
프로필사진

남건욱's 공부기록