JAVA를 잡아라!...
JAVA_[Lv.0] #26~28 본문
문제 출처 : 프로그래머스
#26 마지막 두 원소
문제 설명
정수 리스트 num_list가 주어질 때,
마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을
마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을
추가하여 return하도록 solution 함수를 완성해주세요.
입출력 예
num_list result
[2, 1, 6] [2, 1, 6, 5]
[5, 2, 1, 7, 5] [5, 2, 1, 7, 5, 10]
소스코드 풀이
class Solution {
public int[] solution(int[] num_list) {
int length = num_list.length;
// 기존 배열에서 마지막 index에 값 추가를 위해 새로운 배열 생성
int[] answer = new int[length + 1];
for(int i = 0; i < length; i++) {
answer[i] = num_list[i];
}
int lastValue = num_list[length - 1];
int beforeValue = num_list[length - 2];
if(lastValue > beforeValue) {
answer[length] = lastValue - beforeValue;
}
else {
answer[length] = lastValue * 2;
}
return answer;
}
}
#27 수 조작하기 1
문제 설명
정수 n과 문자열 control이 주어집니다.
control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며,
control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
"w" : n이 1 커집니다.
"s" : n이 1 작아집니다.
"d" : n이 10 커집니다.
"a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
입출력 예
n control result
0 "wsdawsdassw" -1
소스코드 풀이
class Solution {
public int solution(int n, String control) {
int answer = n;
for (int i = 0; i < control.length(); i++) {
if(control.charAt(i) == 'w') {
answer += 1;
}
else if(control.charAt(i) == 's') {
answer -= 1;
}
else if(control.charAt(i) == 'd') {
answer += 10;
}
else {
answer -= 10;
}
}
return answer;
}
}
#28 수 조작하기 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 함수를 완성해 주세요.
입출력 예
numLog result
[0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1] "wsdawsdassw"
소스코드 풀이
class Solution {
public String solution(int[] numLog) {
String answer = "";
for (int i = 0; i < numLog.length - 1; i++) {
if(numLog[i+1] - numLog[i] == 1) {
answer += "w";
}
else if(numLog[i+1] - numLog[i] == -1) {
answer += "s";
}
else if(numLog[i+1] - numLog[i] == 10) {
answer += "d";
}
else {
answer += "a";
}
}
return answer;
}
}
오류
처음에 i < numLog.length - 1을 해주지 않아서 조건(numLog[i+1])에서 배열의 길이보다 길어짐
'JAVA > JAVA_연습문제_프로그래머스' 카테고리의 다른 글
JAVA_[Lv.0] #21~25 (equals(), boolean, Math.pow(), foreach, Integer.parseInt()...) (3) | 2023.11.26 |
---|---|
JAVA_[Lv.0] #16~20 (equals(), boolean) (2) | 2023.11.26 |
JAVA_[Lv.0] #11~15 (메소드, 문자열, 배열, foreach, 강제형변환, if, 삼항연산) (2) | 2023.11.25 |
JAVA_[Lv.0] #6~10 (if문, for문, 문자열 배열, 메소드, substring()) (1) | 2023.11.24 |
JAVA_[Lv.0] #1~5 (if문, for문, Scanner, 형변환, 특수문자 출력...) (2) | 2023.11.22 |