본문 바로가기

프로그래머스 문제

프로그래머스 (Java) 문제 10.08

문제 1:

간단한 식 계산하기

 

문제 설명:
문자열 binomial이 매개변수로 주어집니다. binomial은 "a op b" 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.

제한사항
0 ≤ a, b ≤ 40,000
0을 제외하고 a, b는 0으로 시작하지 않습니다.

 

입출력 예시:
binomial                   result
"43 + 12"                    55
"0 - 7777"                 -7777
"40000 * 40000"     1600000000

 

코드 :

class Solution {
    public int solution(String binomial) {
        int answer = 0;
        
        String[] str = binomial.split(" ");
        int num1 = Integer.parseInt(str[0]);
        int num2 = Integer.parseInt(str[2]);
        
        switch(str[1]){
            case "+" -> answer = num1 + num2;
            case "-" -> answer = num1 - num2;
            case "*" -> answer = num1 * num2;
        }
        
        return answer;
    }
}

 

 

문제 2:

배열 만들기 3

 

문제 설명
정수 배열 arr와 2개의 구간이 담긴 배열 intervals가 주어집니다.

intervals는 항상 [[a1, b1], [a2, b2]]의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다.

이때 배열 arr의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return 하는 solution 함수를 완성해 주세요.

제한사항
1 ≤ arr의 길이 ≤ 100,000
1 ≤ arr의 원소 < 100
1 ≤ a1 ≤ b1 < arr의 길이
1 ≤ a2 ≤ b2 < arr의 길이


입출력 예
arr                                      intervals                                           result
[1, 2, 3, 4, 5]                    [[1, 3], [0, 4]]                           [2, 3, 4, 1, 2, 3, 4, 5]

 

코드 :

import java.util.*;
class Solution {
    public int[] solution(int[] arr, int[][] intervals) {
        int[] answer = {};
        List<Integer> list = new ArrayList<>();
        for(int i = 0; i < intervals.length; i++){ 
            for(int j = 0; j < intervals[i].length; j++){
                for(int k = intervals[i][j]; k <= intervals[i][j+1]; k++){
                    list.add(arr[k]);
                }
                break;
            }
        }
    
        answer = list.stream().mapToInt(i -> i).toArray();
        return answer;
    }
}

 

문제 3:

9로 나눈 나머지

 

문제 설명
음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것이 알려져 있습니다.
이 사실을 이용하여 음이 아닌 정수가 문자열 number로 주어질 때, 이 정수를 9로 나눈 나머지를 return 하는 solution 함수를 작성해 주세요.

제한사항
1 ≤ number의 길이 ≤ 100,000
number의 원소는 숫자로만 이루어져 있습니다.
number는 정수 0이 아니라면 숫자 '0'으로 시작하지 않습니다.

 

입출력 예
number                                        result
"123"                                              6
"78720646226947352489"            2

 

 

코드 :

class Solution {
    public int solution(String number) {
        int answer = 0;
        
        String[] str = number.split("");
        
        int sum = 0;
        for(String st : str){
            sum += Integer.parseInt(st);
        }
        
        answer = sum % 9;
        return answer;
    }
}