
영소문자로 이루어진 문자열 my_string과 영소문자 1글자로 이루어진 문자열 alp가 매개변수로 주어질 때, my_string에서 alp에 해당하는 모든 글자를 대문자로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
1 ≤ my_string의 길이 ≤ 1,000my_string | alp | result |
|---|---|---|
"programmers" | "p" | "Programmers" |
"lowercase" | "x" | "lowercase" |
입출력 예 #1
예제 1번의 my_string은 "programmers"이고 alp가 "p"이므로 my_string에 모든 p를 대문자인 P로 바꾼 문자열 "Programmers"를 return 합니다.
입출력 예 #2
예제 2번의 alp는 "x"이고 my_string에 x는 없습니다. 따라서 "lowercase"를 return 합니다.
문자열 my_string에서 alp의 문자가 있는지를 확인한 뒤 있다면 대문자로, 없다면 my_string을 return하는 문제입니다.
처음에는 임의의 배열을 하나 만들어 for문을 돌려 일일히 값을 비교할까도 생각했지만 번거로울뿐더러 효율성이 좋지 못했습니다.
따라서 저는 아래의 다섯 가지 방법을 사용하여 이 문제를 풀게 되었습니다.
indexOf()replace()substring()toUpperCase()string의 indexOf()메서드를 사용하여 alp이 있는 위치를 알려고 했는데,my_string에 alp가 없다면 indexOf()는 -1을 리턴하게 됩니다.-1의 방번호는 없죠. 그래서 에러가 나게 되는데 이를 방지하고자 삼항연산자를 사용하여 my_string.indexOf(alp)가 0보다 작을 때에는 my_string을 온전히 리턴해주었습니다.alp가 my_string에 있는지를 검사합니다.0이상이 반환될 것이며 조건에 맞지 않아 else부분으로 가게 됩니다.my_string에 넣어주기 위해 사용되었습니다.n~m-1만큼 자르는 메서드입니다.my_string 에서 alp가 있는 인덱스를 잘라 대문자로 변경하기 위해 사용되었습니다.my_string에서 잘려진 문자열을 대문자로 변경해주기 위해 사용되었습니다.class Solution {
public String solution(String my_string, String alp) {
return ( my_string.indexOf(alp) < 0 ? my_string :
my_string.replace(alp,
my_string.substring(my_string.indexOf(alp),
my_string.indexOf(alp)+1).toUpperCase()));
}
}
