728x90
프로그래머스 _ 코딩 기초 트레이닝 DAY 6 - (2)
출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181926
문제 | 정수 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 함수를 완성해 주세요.
입력 #1 |n = 0 control = "wsdawsdassw"
출력 #1 | -1
>> 풀이 <<
String 형태로 주어지는 control의 문자의 케이스를 나누어 비교해주었다. 비교는 if문을 쓰는 방법과 switch case 문을 쓰는 방법이 생각났다. 나는 if문을 이용하여 문제를 풀었다.
일단은 문자열의 문자를 뜯어내는(?) 작업을 해야하는데 방법은 여러 개가 있을 거 같다.
- 말그대로 문자열의 문자를 비교하기 -> charAt()
- 문자를 비교하는 것이므로 control.charAt(i) == 'a' 이런식으로 하면 된다. 객체가 아니라서 valueOf를 쓸 필요가 없다.
- 문자열을 문자배열로 바꾸기 -> toCharArray()
- 문자열.toCharArray() 로 쓰며, 문자열을 문자형 배열로 바꿔주는 역할을 한다. ex | Apple => [A,p,p,l,e]
- 문자열배열 새로 생성(쪼개기) -> split()
- 문자열의 특정 부분을 이용해 그 부분을 기준으로 문자열을 나누는 역할을 한다. 그래서 보통 split("") 을 이용하면 문자 하나하나를 나누어 배열을 만들 수 있다.
나는 1번과 if문을 사용해 아래와 같은 코드를 작성했다.
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++;
else if (control.charAt(i) == 's') answer--;
else if (control.charAt(i) == 'd') answer += 10;
else if (control.charAt(i) == 'a') answer -= 10;
}
return answer;
}
}
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[프로그래머스] 배열 만들기2 ( Array to List, List to Array ) - JAVA (0) | 2023.07.10 |
---|---|
[프로그래머스] 수열과 구간 쿼리 2 - JAVA (0) | 2023.07.09 |
[프로그래머스] 등차수열의 특정한 항 더하기 (boolean 배열) - JAVA (0) | 2023.07.04 |
[프로그래머스] 코드 처리하기 - JAVA (0) | 2023.07.04 |
[프로그래머스] 조건문자열 - JAVA (0) | 2023.07.03 |