프로그래머스 코딩테스트(수 조작하기 2, 문자열 뒤집기, 수열과 구간 쿼리 3)
<수 조작하기 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;
}
}