[프로그래머스 | LEVEL0 | JAVA] 수 조작하기 1

BIN·2024년 4월 2일

프로그래머스

목록 보기
9/24

🔎 문제

❗주의사항

⭕ 풀이

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이 계속 변하기 때문에 제출할 때 계속 틀렸던 거다.
생각하면 할수록 어이없네ㅋㅋ;;;😒

📌 KEYPOINT

//향상된 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(변수타입 변수이름 : 배열이름){
	//반복 코드
}

💗 느낀점

항상 최고의 최적화된 소스를 위해 공부를 열심히 해야겠다.
막상 보면 다 아는 내용인데 적용까지는 아직 따라주지 않는 것 같다.
다른 사람들의 풀이를 보면서 열심히 공부해야겠다고 느꼈다.

profile
A new developer...Bin

0개의 댓글