[Java] 특정한 문자를 대문자로 바꾸기 (programmers)

Haeun Noh·2023년 8월 24일
0

programmers

목록 보기
62/64
post-thumbnail

0502


문제 설명

영소문자로 이루어진 문자열 my_string과 영소문자 1글자로 이루어진 문자열 alp가 매개변수로 주어질 때, my_string에서 alp에 해당하는 모든 글자를 대문자로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.


제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000

입출력 예

my_stringalpresult
"programmers""p""Programmers"
"lowercase""x""lowercase"

입출력 예 설명

입출력 예 #1
예제 1번의 my_string"programmers"이고 alp"p"이므로 my_string에 모든 p를 대문자인 P로 바꾼 문자열 "Programmers"return 합니다.

입출력 예 #2
예제 2번의 alp"x"이고 my_stringx는 없습니다. 따라서 "lowercase"return 합니다.



풀이 방법

문자열 my_string에서 alp의 문자가 있는지를 확인한 뒤 있다면 대문자로, 없다면 my_stringreturn하는 문제입니다.

처음에는 임의의 배열을 하나 만들어 for문을 돌려 일일히 값을 비교할까도 생각했지만 번거로울뿐더러 효율성이 좋지 못했습니다.

따라서 저는 아래의 다섯 가지 방법을 사용하여 이 문제를 풀게 되었습니다.

  1. 삼항연산자
  2. indexOf()
  3. replace()
  4. substring()
  5. toUpperCase()

  1. 삼항연산자
    앞서 보여드렸듯이 stringindexOf()메서드를 사용하여 alp이 있는 위치를 알려고 했는데,
    만약 my_stringalp가 없다면 indexOf()-1을 리턴하게 됩니다.
    -1의 방번호는 없죠. 그래서 에러가 나게 되는데 이를 방지하고자 삼항연산자를 사용하여 my_string.indexOf(alp)0보다 작을 때에는 my_string을 온전히 리턴해주었습니다.

  1. indexOf()
    alpmy_string에 있는지를 검사합니다.
    만약 있다면 반환값으로는 인덱스 0이상이 반환될 것이며 조건에 맞지 않아 else부분으로 가게 됩니다.

  1. replace()
    특정 문자열을 다른 문자열로 변경하는 메서드입니다.
    대문자로 바뀐 문자열을 my_string에 넣어주기 위해 사용되었습니다.

  1. substring(n, m)
    문자열을 인덱스 n~m-1만큼 자르는 메서드입니다.
    my_string 에서 alp가 있는 인덱스를 잘라 대문자로 변경하기 위해 사용되었습니다.

  1. toUpperCase()
    문자열을 대문자로 변경해줍니다.
    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()));
    }
}


실행 화면



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글