본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 문자열 뒤집기

by nam_ji 2024. 6. 18.

문자열 뒤집기

문제

  • 문자열 my_string과 정수 s, e가 매개변수로 주어집니다.
  • my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을
  • 출력하는 문제입니다.
  • my_string s e result
    "Progra21Sremm3" 6 12 "ProgrammerS123"
    "Stanley1yelnatS" 4 10 "Stanley1yelnatS"


테스트 (인텔리제이)

  • my_string의 문자 하나씩 조작할 수 있게 split을 통해 newStr 변수에 문자별로 나눠줍니다.
  • for문을 통해 my_string의 크기만큼 순회하도록 하고 answer에 newStr의 원소를 더하게 해줍니다.
  • 여기서 if문으로 for문의 순서가 s와 같을 때에는 e부터 s까지 순회하는 for문을 만들고
  • answer에 newStr의 원소를 담게 하고
  • 다른 if문에는 첫 번째 for문의 순서가 s보다 작거나 e보다 크면 answer에 newStr의 원소를 저장하게 하면 됩니다.
public class 문자열_뒤집기 {
  public static void main(String[] args) {
    /*
    문자열 my_string과 정수 s, e가 매개변수로 주어집니다.
    my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을
    출력하는 문제입니다.

    입출력 예
    my_string	        s	e	  result
    "Progra21Sremm3"	6	12	"ProgrammerS123"
    "Stanley1yelnatS"	4	10	"Stanley1yelnatS"

    입출력 설명

    입출력 예 #1
    예제 1번의 my_string에서 인덱스 6부터 인덱스 12까지를 뒤집은 문자열은
    "ProgrammerS123"이므로 "ProgrammerS123"를 return 합니다.

    입출력 예 #2
    예제 2번의 my_string에서 인덱스 4부터 인덱스 10까지를 뒤집으면
    원래 문자열과 같은 "Stanley1yelnatS"이므로 "Stanley1yelnatS"를 return 합니다.
    */

    String my_string = "Progra21Sremm3";
    String[] newStr = my_string.split("");
    StringBuilder answer = new StringBuilder();
    int s = 6;
    int e = 12;

    for (int i = 0; i < newStr.length; i++) {
      if (i == s) {
        for (int j = e; j >= s; j--) {
          answer.append(newStr[j]);
        }
      }
      if (i < s || i > e) {
        answer.append(newStr[i]);
      }
    }

    System.out.println(answer);
  }
}

프로그래머스 코드

class Solution {
    public StringBuilder solution(String my_string, int s, int e) {
        String[] newStr = my_string.split("");
        StringBuilder answer = new StringBuilder();
        
        for (int i = 0; i < newStr.length; i++) {
            if (i == s) {
                for (int j = e; j >= s; j--) {
                    answer.append(newStr[j]);
                }
            }
            if (i < s || i > e) {
                answer.append(newStr[i]);
            }
        }
        
        return answer;
    }
}