알고리즘 -프로그래머스 인덱스 바꾸기 - 120895

워니·2023년 3월 22일

알고리즘

목록 보기
6/30
post-thumbnail

[level 0] 인덱스 바꾸기 - 120895

문제 링크

성능 요약

메모리: 75.1 MB, 시간: 1.43 ms

구분

코딩테스트 연습 > 코딩테스트 입문

채점결과


정확성: 100.0
합계: 100.0 / 100.0

문제 설명

문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.


제한사항
  • 1 < my_string의 길이 < 100
  • 0 ≤ num1, num2 < my_string의 길이
  • my_string은 소문자로 이루어져 있습니다.
  • num1 ≠ num2

입출력 예
my_string num1 num2 result
"hello" 1 2 "hlelo"
"I love you" 3 6 "I l veoyou"

입출력 예 설명

입출력 예 #1

  • "hello"의 1번째 인덱스인 "e"와 2번째 인덱스인 "l"을 바꾸면 "hlelo"입니다.

입출력 예 #2

  • "I love you"의 3번째 인덱스 "o"와 " "(공백)을 바꾸면 "I l veoyou"입니다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges


  • 내 풀이
class Solution {
    public String solution(String my_string, int num1, int num2) {
        List<String> list = new ArrayList<>();
        for (int i = 0; i < my_string.length(); i++) {
            char a = my_string.charAt(i);
            list.add(String.valueOf(a));
        }
        String switch1 = list.get(num1);
        String switch2 = list.get(num2);

        if (num1 > num2) {
            list.remove(num1);
            list.remove(num2);
            list.add(num2, switch1);
            list.add(num1, switch2);
        }else{
            list.remove(num2);
            list.remove(num1);
            list.add(num1, switch2);
            list.add(num2, switch1);
        }

        String answer = "";
        for (int i = 0; i < list.size(); i++) {
            answer += list.get(i);
        }
        return answer;
    }
}
  • TDD
class SolutionTest {

    @Test
    @DisplayName("hello, num1=1, num2=2 == hlelo")
    void solution() {
        Assertions.assertThat(new Solution().solution("hello", 1, 2)).isEqualTo("hlelo");
    }

    @Test
    @DisplayName("I love you, num1 = 3, num2 = 6 == I l veoyou")
    void solution2() {
        Assertions.assertThat(new Solution().solution("I love you", 3, 6)).isEqualTo("I l veoyou");
    }
}

  • 풀이

    좋은 풀이라고는 못하겠다
    List 컬렉션을 사용하였고
    charAt을 사용하여 인자값으로 들어온 my_string의 한글자씩 쪼개 list로 add하였다.
    num1, num2 index값에 위치한 string 값을 구하였고
    num1, num2 중 더 큰수 (index가 더 높은 수) 를 비교해
    remove,add를 나누어 적용하였다
    return 형태인 string으로 값을 담아 출력하였다.

profile
Backend-Dev

0개의 댓글