영소문자로 이루어진 문자열 my_string
과 영소문자 1
글자로 이루어진 문자열 alp
가 매개변수로 주어질 때, my_string
에서 alp
에 해당하는 모든 글자를 대문자로 바꾼 문자열을 return
하는 solution
함수를 작성해 주세요.
1 ≤ my_string의 길이 ≤ 1,000
my_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()));
}
}