[프로그래머스_ Java_Lv0] 개미군단, 가위바위보. substring

박경희·2025년 1월 24일

코딩테스트

목록 보기
48/69
post-thumbnail
public int solution(int hp) {
        int answer = 0;

        answer += hp / 5;
        hp %=5;

        answer += hp / 3;
        hp %= 3;

        answer += hp;

        return answer;
    }

return hp / 5 + (hp % 5) /3 + (hp % 5) % 3;

public String solution(String rsp) {
        
        StringBuilder builder = new StringBuilder();
        
        for(char c : rsp.toCharArray()) {
            if(c == '2') {
                builder.append('0');
            }else if(c == '0') {
                builder.append('5');
            }else if(c == '5'){
                builder.append('2');
            }
            
        }
        return builder.toString();
    }

다른 풀이

  public String solution(String rsp) {
        // 2 - 가위, 0 - 바위, 5 - 보
        Map<Character, Character> winNumbers = new HashMap<>();
        winNumbers.put('2', '0');
        winNumbers.put('0', '5');
        winNumbers.put('5', '2');

        StringBuilder answer = new StringBuilder();

        for (char c : rsp.toCharArray()) {
            answer.append(winNumbers.get(c));
        }

        return answer.toString();
    }
  • substring(i, i+1) 대신 char 사용 → charAt(i) 또는 toCharArray()를 사용하여 더 직관적이고 성능이 향상된다.
  • 여기서는 HashMap의 키를 String 대신 Character 타입으로 변경하는 것이 더 효율적이다.
  • for-each 사용 → 코드가 더 간결하고 가독성이 좋아진다.

   Map<String, String> winNumbers = new HashMap<>();
   
   for (int i = 0; i < rsp.length(); i++) {
            answer.append(winNumbers.get(rsp.substring(i, i+1)));
        }

.substring(i, i+1)

  • substring(i, i+1)i번째 문자부터 (i+1)번째 문자 전까지를 가져오는 메서드이므로
    한 글자를 문자열 형태(String)로 가져온다.
String rsp = "205";
System.out.println(rsp.substring(0, 1)); // "2"
System.out.println(rsp.substring(1, 2)); // "0"
System.out.println(rsp.substring(2, 3)); // "5"

0개의 댓글