문자열 겹쳐쓰기 LV.0
문제
- 문자열 my_string, overwrite_string과 정수 s가 매개변수로 주어집니다.
- my_string의 인덱스 s부터 overwrite_string의 길이만큼
- 문자열 overwrite_string으로 바꾼 문자열을 출력하는 문제입니다.
- 입출력 예
-
my_string overwrite_string s result "He11oWor1d" "lloWorl" 2 "HelloWorld" "Program29b8UYP" "merS123" 7 "ProgrammerS123" "Pro29b8mers" "gram" 3 "Programmers"
-
테스트 (인텔리제이)
- my_string의 문자열을 s부터 overwrite_string의 크기만큼 범위의 문자열을 overwrite_string으로 대체하는 문제입니다.
- 그래서 생각한 방법은 for문으로 0 ~ s 까지 순회하도록 하고 my_string의 해당 인덱스에 위치한 문자를 꺼내 answer에 담고
- 이어서 overwrite_string의 문자열을 추가하고 마지막 나머지 남아 있을 문자가 있을 수 있기 때문에
- if문으로 answer의 크기가 my_string의 크기보다 작다면 my_string을 substring으로 answer의 크기부터 마지막 문자까지 answer에 담도록 하여 문제를 해결했습니다.
- 또 다른 풀이는 다른 사람의 풀이에서 좋은 풀이가 있어 가져와 봤습니다.
- 문자열 before와 after 변수를 선언하고 각각
- before에는 substring으로 0 ~ s까지 my_string을 잘라서 저장해줍니다.
- after에는 substring으로 s + overwrite_string의 크기부터 마지막까지 my_string을 잘라서 저장해줍니다.
- 마지막으로 answer에 before + overwrite_string + after를 담아주면 됩니다.
package com.namji.codingtest;
public class 문자열_겹쳐쓰기 {
public static void main(String[] args) {
/*
문자열 my_string, overwrite_string과 정수 s가 매개변수로 주어집니다.
my_string의 인덱스 s부터 overwrite_string의 길이만큼
문자열 overwrite_string으로 바꾼 문자열을 출력하는 문제입니다.
입출력 예
my_string overwrite_string s result
"He11oWor1d" "lloWorl" 2 "HelloWorld"
"Program29b8UYP" "merS123" 7 "ProgrammerS123"
"Pro29b8mers" "gram" 3 "Programmers"
입출력 설명
#1
예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에
해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다.
#2
예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에
해당하는 부분은 "29b8UYP"이고 이를 "merS123"로 바꾼 "ProgrammerS123"를 return 합니다.
*/
// String my_string = "Pro29b8mers";
// String overwrite_string = "gram";
// int s = 3;
// StringBuilder answer = new StringBuilder();
//
// for (int i = 0; i < s; i++) {
// answer.append(my_string.charAt(i));
// }
// answer.append(overwrite_string);
//
// if (answer.length() < my_string.length()) {
// answer.append(my_string.substring(answer.length()));
// }
// System.out.println(answer);
String my_string = "Pro29b8mers";
String overwrite_string = "gram";
int s = 3;
StringBuilder answer = new StringBuilder();
String before = my_string.substring(0, s);
String after = my_string.substring(s + overwrite_string.length());
answer.append(before)
.append(overwrite_string)
.append(after);
System.out.println(answer);
}
}
프로그래머스 코드
// class Solution {
// public StringBuilder solution(String my_string, String overwrite_string, int s) {
// StringBuilder answer = new StringBuilder();
// for (int i = 0; i < s; i++) {
// answer.append(my_string.charAt(i));
// }
// answer.append(overwrite_string);
// if (answer.length() < my_string.length()) {
// answer.append(my_string.substring(answer.length()));
// }
// return answer;
// }
// }
class Solution {
public StringBuilder solution(String my_string, String overwrite_string, int s) {
StringBuilder answer = new StringBuilder();
String before = my_string.substring(0, s);
String after = my_string.substring(s + overwrite_string.length());
return answer.append(before).append(overwrite_string).append(after);
}
}
'Coding Test > Java Coding Test' 카테고리의 다른 글
[프로그래머스 / 자바] - 그림 확대 (0) | 2024.08.22 |
---|---|
[프로그래머스 / 자바] - 같은 숫자는 싫어 (0) | 2024.08.21 |
[프로그래머스 / 자바] - 외계어 사전 (0) | 2024.08.12 |
[프로그래머스 / 자바] - 정사각형으로 만들기 (4) | 2024.08.10 |
[프로그래머스 / 자바] - 수열과 구간 쿼리 2 (0) | 2024.08.09 |