본문 바로가기

프로그래머스 문제

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

문제 1:
수열과 구간 쿼리 1

 

문제 설명
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e] 꼴입니다.

각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 arr [i]에 1을 더합니다.

위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.

제한사항
1 ≤ arr의 길이 ≤ 1,000
0 ≤ arr의 원소 ≤ 1,000,000
1 ≤ queries의 길이 ≤ 1,000
0 ≤ s ≤ e < arr의 길이


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

 

코드:

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        
        for(int[] query : queries){
            int s = query[0];
            int e = query[1];
            
            for(int i = s; i <= e; i++){
                arr[i]++;
            }
        }
        
        return arr;
    }
}

 

문제 2:

외계행성의 나이

 

문제 설명
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2,..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return 하도록 solution 함수를 완성해 주세요.

제한사항
age는 자연수입니다.
age ≤ 1,000
PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.

 

입출력 예
age           result
23              "cd"
51              "fb"
100           "baa"

 

코드 :

class Solution {
    public String solution(int age) {
        String answer = "";
        
        String spaceAge = "";
        while(age > 0){
            spaceAge += myAgeToSpaceAge(age % 10);
            age /= 10;
        }
        
        for(int i = spaceAge.length()-1; i >= 0; i--){
            answer += spaceAge.charAt(i);
        }
        
        return answer;
    }
    
    
    public String myAgeToSpaceAge(int age){
        String spaceAge = "";
        switch(age){
            case 0 -> spaceAge += "a";
            case 1 -> spaceAge += "b";
            case 2 -> spaceAge += "c";
            case 3 -> spaceAge += "d";
            case 4 -> spaceAge += "e";
            case 5 -> spaceAge += "f";
            case 6 -> spaceAge += "g";
            case 7 -> spaceAge += "h";
            case 8 -> spaceAge += "i";
            case 9 -> spaceAge += "j";
        }
        return spaceAge;
    }
}

 

 

문제 3:

중복된 문자 제거

 

문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해 주세요.

제한사항
1 ≤ my_string ≤ 110
my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
대문자와 소문자를 구분합니다.
공백(" ")도 하나의 문자로 구분합니다.
중복된 문자 중 가장 앞에 있는 문자를 남깁니다.

 

입출력 예 
my_string                                        result
"people"                                          "peol"
"We are the world"                    "We arthwold"

 

코드 :

import java.util.*;

class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        List<String> list = new ArrayList<>();
        
        for(char ch : my_string.toCharArray()){
            if(list.isEmpty()){
                list.add(String.valueOf(ch));
            }
            
            if(list.contains(String.valueOf(ch))){
                continue;
            }
            list.add(String.valueOf(ch));
        }
        
        
        for(String st : list){
            answer += st;
        }
        
        
        return answer;
    }
}