코딩테스트

프로그래머스 코딩테스트(수 조작하기 2, 문자열 뒤집기, 수열과 구간 쿼리 3)

SOME코딩 2023. 5. 22. 17:29

<수 조작하기 2>

문제 설명
정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.

"w" : 수에 1을 더한다.
"s" : 수에 1을 뺀다.
"d" : 수에 10을 더한다.
"a" : 수에 10을 뺀다.
그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.

주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.

 

풀이

class Solution {
    public String solution(int[] numLog) {
        String answer = "";
        for(int i=1;i<numLog.length;i++){
            if(numLog[i-1]+1==numLog[i]){
                answer += "w";
            } else if(numLog[i-1]-1==numLog[i]){
                answer += "s";
            } else if(numLog[i-1]+10==numLog[i]){
                answer += "d";
            } else answer += "a";
        }
        return answer;
    }
}

 

<문자열 뒤집기>

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

 

풀이

class Solution {
    public String solution(String my_string, int s, int e) {
        String answer = my_string.substring(0,s);
        for(int i=e;i>=s;i--){
            answer+= my_string.charAt(i);
        }
        answer += my_string.substring(e+1, my_string.length());
        return answer;
    }
}

 

<수열과 구간 쿼리 3>

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

각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.

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

 

풀이

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        for(int i=0;i<queries.length;i++){
            int temp = arr[queries[i][0]];
            arr[queries[i][0]] = arr[queries[i][1]];
            arr[queries[i][1]] = temp;
        }
        return arr;
    }
}