
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 if(control.charAt(i) == 'a'){
answer -= 10;
}
}
return answer;
}
}
for문 과 control.charAt()을 이용해서 해당 위치의 문자와 비교하고 결과를 계산하여 출력하는 방식을 사용하였다.
틀릴 부분이 없는데 제출할때만 계속 실패하길래 어디가 문제일까 고민을 좀 했는데 너무 어이없게도
int answer = 0;
로 써놓고 풀고있었다.
코드 실행을 누르면 answer가 0부터 시작해서 결과가 맞게 출력될 수 밖에 없었다. n이 계속 변하기 때문에 제출할 때 계속 틀렸던 거다.
생각하면 할수록 어이없네ㅋㅋ;;;😒
//향상된 for문 + toCharArray() + switch case문
for(char ch : control.toCharArray()) {
switch(ch) {
case 'w': answer += 1; break;
case 's': answer -= 1; break;
case 'd': answer += 10; break;
case 'a': answer -= 10; break;
default:break;
}
}
다른 사람들이 푼 풀이를 보다가 너무 깔끔한 풀이라서 가져와봤다.
향상된 for문 + toCharArray() + switch case문의 3박자 콜라보가 보기도 좋고 속도도 빠른 것 같아서 한 번 더 풀어보았다.
기존의 나의 풀이보다는 이 방법으로 풀도록 연습해야겠다.
toCharArray() : 문자열을 문자 배열로 만들어서 반환
//향상된 for문 사용법
for(변수타입 변수이름 : 배열이름){
//반복 코드
}
항상 최고의 최적화된 소스를 위해 공부를 열심히 해야겠다.
막상 보면 다 아는 내용인데 적용까지는 아직 따라주지 않는 것 같다.
다른 사람들의 풀이를 보면서 열심히 공부해야겠다고 느꼈다.