반응형

문제 설명

 

정수 start_num와 end_num가 주어질 때, start_num에서 end_num까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.


제한사항

 

0 ≤ end_num  start_num ≤ 50


입출력 예

 

start end_num result
10 3 [10,9,8,7,6,5,4,3]

입출력 예 설명

 

입출력 예 #1

10부터 3까지 1씩 감소하는 수를 담은 리스트는 [10, 9, 8, 7, 6, 5, 4, 3]입니다.


풀이

 

-> start와 end_num의 차이로 length를 정해두고 반복문을 돌려서 start값부터 1씩 감소하면서 answer배열에 담는다.


코드

 

class Solution {
    public int[] solution(int start, int end_num) {
        int[] answer = {};
        int length = start - end_num + 1;
        answer = new int[length];
        for(int i=0;i<length;i++){
            answer[i]=start--;
        }
        return answer;
    }
}
반응형
반응형

문제 설명

 

문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.


제한사항

 

1 ≤ indices의 길이 < my_string의 길이 ≤ 100

my_string은 영소문자로만 이루어져 있습니다

0 ≤ indices의 원소 < my_string의 길이

indices의 원소는 모두 서로 다릅니다.


입출력 예

 

my_string indices result
"apporoograpemmemprs" [1, 16, 6, 15, 0, 10, 11, 3] "programmers"

입출력 예 설명

 

입출력 예 #1

예제 1번의 my_string의 인덱스가 잘 보이도록 표를 만들면 다음과 같습니다.

index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
my_string a p p o r o o g r a p e m m e m p r s

indices에 있는 인덱스의 글자들을 지우고 이어붙이면 "programmers"가 되므로 이를 return 합니다.

 


풀이

 

-> indices를 내림차순으로 정렬 한 후에 substring을 통해 my_string에서 잘라할 문자의 앞부분과 뒷부분을 더한다. 반복문을 통해 이 작업을 반복하여 잘라낼 문자를 잘라낸다. 주의할 점은 indices가 0일 때는 substring이 1부터 시작할 수 있도록 해준다.

 


import java.util.*;
class Solution {
    public String solution(String my_string, int[] indices) {
        String answer = "";
        
        Arrays.sort(indices);
        for(int i=0; i<indices.length/2; i++){
            int temp = indices[i];
            indices[i] = indices[indices.length - 1 - i];
            indices[indices.length - 1 - i] = temp;
        }
        
        for(int i=0; i<indices.length; i++){
            if(indices[i]!=0){
                my_string = my_string.substring(0,indices[i])+my_string.substring(indices[i]+1);
            } else {
                my_string = my_string.substring(indices[i]+1);
            }
        }
        answer = my_string;
        return answer;
    }
}
반응형
반응형

문제 설명

정수 n과 k가 주어졌을 때, 1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.


제한사항

 

1 ≤ n ≤ 1,000,000

1 ≤ k ≤ min(1,000, n)


입출력 예

n k result
10 3 [3,6,9]
15 5 [5,10,15]

입출력 예 설명

입출력 예 #1

1 이상 10 이하의 3의 배수는 3, 6, 9 이므로 [3, 6, 9]를 return 합니다.

 

입출력 예 #2

1 이상 15 이하의 5의 배수는 5, 10, 15 이므로 [5, 10, 15]를 return 합니다.


풀이

-> n을 k로 나눈 몫 크기의 answer 배열을 선언하고, 반복문을 통해 i를 1부터 n까지 돌리며 k로 나눈 나머지가 0인 k의 배수를 찾아 answer 배열에 담아준다. 이 때, count라는 변수를 0으로 놓고 조건문이 돌면 answer의 index값으로 사용하고 1씩 증가시켜준다.


코드

class Solution {
    public int[] solution(int n, int k) {
        int[] answer = new int[n/k];
        int count = 0;
        for(int i=1;i<=n;i++){
            if(i%k==0){
                answer[count]=i;
                count++;
            }
        }
        return answer;
    }
}
반응형
반응형

문제 설명

 

알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.


제한사항

 

1 ≤ my_string의 길이 ≤ 1,000


입출력 예

 

my_string result
"Programmers" [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]

입출력 예 설명

 

입출력 예 #1

예제 1번의 my_string에서 'P'가 1개, 'a'가 1개, 'e'가 1개, 'g'가 1개, 'm'이 2개, 'o'가 1개, 'r'가 3개, 's'가 1개 있으므로 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]를 return 합니다.


풀이

 

-> 알파벳 a-z, A-Z의 갯수가 52개이다. 해당 개수만큼 answer을 초기화시켜준다. 그 후에 대소문자를 구분해서 해당 배열의 index를 잡아서 1씩 증가시켜준다. 여기서 a-z와 A-Z 사이에 다른 문자도 있다는 것을 몰라서 한번에 처리하려다 헤맸다. 기억해두도록 하자.

 

알파벳은 65부터 90까지의 숫자로, 소문자 알파벳은 97부터 122까지의 숫자로 표현


코드

 

class Solution {
    public int[] solution(String my_string) {
        int length = my_string.length();
        int[] answer = new int[52];
        
        for (int i = 0; i < length; i++) {
            char c = my_string.charAt(i);
            if (c >= 'A' && c <= 'Z') {
                // 대문자 알파벳인 경우
                answer[c - 'A']++;
            } else if (c >= 'a' && c <= 'z') {
                // 소문자 알파벳인 경우
                answer[c - 'a' + 26]++;
            }
        }
        
        return answer;
    }
}
반응형
반응형

문제 설명

 

자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.


제한사항

 

my_string은 숫자와 알파벳으로만 이루어져 있습니다.

1 ≤ my_string의 길이 ≤ 1,000

0 ≤ s  e < my_string의 길이


입출력 예

my_string s e result
"Progra21Sremm3" 6 12 "ProgrammerS123"
"Stanley1yelnatS" 4 10 "Stanley1yelnatS"

입출력 예 설명

 

입출력 예 #1

예제 1번의 my_string에서 인덱스 6부터 인덱스 12까지를 뒤집은 문자열은 "ProgrammerS123"이므로 "ProgrammerS123"를 return 합니다.

 

입출력 예 #2

 

예제 2번의 my_string에서 인덱스 4부터 인덱스 10까지를 뒤집으면 원래 문자열과 같은 "Stanley1yelnatS"이므로 "Stanley1yelnatS"를 return 합니다.


풀이

 

-> 뒤집어야하는 부분의 앞, 뒤 부분만 substring으로 잘라서 먼저 first와 third 변수에 저장해둔다. 그 후에 s, e 범위에 포함되는 부분만 반복문을 통해서 second에 뒤집은채로 담은 후 first + second + third를 해준다.


코드

 

class Solution {
    public String solution(String my_string, int s, int e) {
        String answer = "";
        int length = my_string.length();
        String first = my_string.substring(0, s);
        String second = "";
        String third = my_string.substring(e+1, length);
        System.out.println(my_string.charAt(s));
        for(int i=e;i>s-1;i--){
            second += my_string.charAt(i); 
        }
        answer = first + second + third ;
        return answer;
    }
}
반응형
반응형

문제 설명

 

어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미합니다. 예를 들어, "banana"의 모든 접두사는 "b", "ba", "ban", "bana", "banan", "banana"입니다. 문자열 my_string과 is_prefix가 주어질 때, is_prefix가 my_string의 접두사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.


제한사항

 

1 ≤ my_string의 길이 ≤ 100

1 ≤ is_prefix의 길이 ≤ 100

my_string과 is_prefix는 영소문자로만 이루어져 있습니다.


입출력 예

my_string is_prefix result
"banana" "ban" 1
"banana" "nan" 0
"banana" "abcd" 0
"banana" "bananan" 0

입출력 예 설명

 

입출력 예 #1

예제 1번에서 is_prefix가 my_string의 접두사이기 때문에 1을 return 합니다.

 

입출력 예 #2

예제 2번에서 is_prefix가 my_string의 접두사가 아니기 때문에 0을 return 합니다.

 

입출력 예 #3

예제 3번에서 is_prefix가 my_string의 접두사가 아니기 때문에 0을 return 합니다.

 

입출력 예 #4

예제 4번에서 is_prefix가 my_string의 접두사가 아니기 때문에 0을 return 합니다.


풀이

 

-> 삼항식을 통해서 is_prefix의 길이가 my_string보다 길다면 my_string의 길이를 length로 잡고, 그외에는 is_prefix의 길이를 length로 잡는다. 그 후 my_string을 index 0부터 length길이 만큼 substring으로 잘라 준 후에 is_prefix와 같은지 비교한다.


코드

 

class Solution {
    public int solution(String my_string, String is_prefix) {
        int answer = 0;
        int length = is_prefix.length()>my_string.length()?my_string.length():is_prefix.length();
        String temp = my_string.substring(0,length);
        if(temp.equals(is_prefix)){
            answer = 1;
        } else {
            answer = 0;
        }
        return answer;
    }
}
반응형
반응형

문제 설명

어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다. 문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.


제한사항

my_string은 알파벳 소문자로만 이루어져 있습니다.

1 ≤ my_string의 길이 ≤ 100


입출력 예

my_string result
"banana" ["a", "ana", "anana", "banana", "na", "nana"]
"programmers" ["ammers", "ers", "grammers", "mers", "mmers", "ogrammers", "programmers", "rammers", "rogrammers", "rs", "s"]

입출력 예 설명

입출력 예 #1

예제 1번의 my_string는 "banana"로 모든 접미사는 문제의 설명과 같습니다. 이를 사전순으로 정렬하면 "a", "ana", "anana", "banana", "na", "nana"이므로 ["a", "ana", "anana", "banana", "na", "nana"]를 return 합니다.

 

입출력 예 #2

예제 2번의 my_string는 "programmers"이고 모든 접미사는 "programmers", "rogrammers", "ogrammers", "grammers", "rammers", "ammers", "mmers", "mers", "ers", "rs", "s"입니다. 이를 사전순으로 정렬한 문자열 배열 ["ammers", "ers", "grammers", "mers", "mmers", "ogrammers", "programmers", "rammers", "rogrammers", "rs", "s"]를 return 합니다.


풀이

-> 먼저 temp배열을 만들어서 만들 수 있는 모든 접미사를 만들어서 담아준다. 그 후에 사전적 배열로 어떻게 만들지 고민을 많이 해봤는데 sort함수를 사용하니 간단하게 해결되었다. 그냥 사전순 배열은 어떻게 할 수 있을지 고민해보도록 해야겠다.


코드

import java.util.*;
class Solution {
    public String[] solution(String my_string) {
        String[] answer = {};
        int length = my_string.length();
        String[] temp = new String[length];
        for(int i=0; i<length;i++){
            temp[i] = my_string.substring(i, length);
        }
        Arrays.sort(temp); // temp 배열을 사전순으로 정렬
        answer = temp;
        return answer;
    }
}
반응형
반응형

문제 설명

문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.
배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.


제한사항
0 ≤ s < 100
1 ≤ l ≤ 8
10l - 1 ≤ k < 10l
1 ≤ intStrs의 길이 ≤ 10,000
s + l ≤ intStrs의 원소의 길이 ≤ 120


입출력 예

intStrs k s l result
["0123456789","9876543210","9999999999"] 50000 5 5 ["56789","99999"]

입출력 예 설명

입출력 예 #1

idx에 따라 잘라낸 문자열과 그에 따른 ret의 변화를 표시하면 다음 표와 같습니다.

idx 잘라낸 문자열 ret
0 "56789" ["56789"]
1 "43210" ["56789"]
2 "99999" ["56789","99999]

풀이

-> intStrs의 배열의 길이만큼 반복문을 돌려서 intStrs각 요소를 substring을 통해 s~s+l만큼 길이로 자른다. 자른 문자열을 int로 변환해주고 k와 값을 비교해서 임시로 만든 배열 temp에 담아주고 담긴 갯수를 세는 count를 증가시켜준다. 이렇게 선처리 한 후 count만큼 answer 배열을 선언하여 temp에 담긴 값들만 answer배열에 다시 담아준다.


코드

class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        int[] answer = {};
        int[] temp = new int[intStrs.length];
        int count = 0;
        for(int i=0;i<intStrs.length;i++){
            String strTemp = intStrs[i].substring(s,s+l);
            int intTemp = Integer.parseInt(strTemp);
            if(intTemp>k){
                temp[count]=intTemp;
                count++;
            }
        }
        answer = new int[count];
        for(int j=0; j<count; j++){
            answer[j]=temp[j];
        }
        
        return answer;
    }
}
반응형

+ Recent posts