[프로그래머스] Java 코딩테스트 - 가위 바위 보

yihyun·2024년 8월 12일

코딩테스트

목록 보기
14/105
post-thumbnail

가위 바위 보

✅ 문제설명

가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.

✅ 제한사항

0 < rsp의 길이 ≤ 100
rsp와 길이가 같은 문자열을 return 합니다.
rsp는 숫자 0, 2, 5로 이루어져 있습니다.

🔽 소스코드 1

실행시간 : 0.14ms ~ 0.34ms

  1. 들어오는 문자열을 하나씩 비교해주기 위해 한글자씩 쪼개서 배열에 담아준다.
  2. 반복문 for 과 조건문 if 을 활용해 배열의 인덱스 0번 부터 해당하는 값을 넣어준다.
  3. 반복문은 들어온 문자열의 길이반큼 반복해준다.
    ※ 문자열을 더해주는 것으로 성능을 위해 StringBuffer 사용
class Solution {
    public String solution(String rsp) {
        StringBuffer buffer = new StringBuffer();
        String[] arr = rsp.split("");
    
        for (int i = 0; i < arr.length; i++) {
        	if(arr[i].equals("2")) {
        		buffer.append("0");
        	} else if (arr[i].equals("0")) {
        		buffer.append("5");
        	} else {
        		buffer.append("2");
        	}
		}
        return buffer.toString();
    }
}

🔽 소스코드 2

실행시간 : 0.07ms ~ 0.13ms

속도 향상을 위해 for 문과 switch 문을 사용해주는 방법으로, if문을 사용해주는 것보다 속도가 빠르다.

class Solution {
    public String solution(String rsp) {
    	StringBuffer buffer = new StringBuffer();
    	
    	for (int i = 0; i < rsp.length(); i++) {
    		switch (rsp.charAt(i)) {
			case '2' :
				buffer.append("0");
				break;
			
			case '0' : 
				buffer.append("5");
				break;
				
			case '5' : 
				buffer.append("2");
				break;
			}
		}
    	return buffer.toString();
    }
}
profile
개발자가 되어보자

0개의 댓글