1. 문제
대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력
2. 예시
tiggggggEEEEEERRDDSSsldkf
TIGGGGGGeeeeeerrddssSLDKF
AppLe
aPPlE
3. 코드
- 지난번 올린 문자열 찾기에 사용된 메서드나 객체를 사용했다.
- for문안에 if문을 생성해 대문자인지 소문자인지 확인 후, 대문자이면 소문자로 변환하고 소문자이면 대문자를 변환한다.
- 대소문자 확인여부 시 사용하는 메서드
- isUpperCase()/isLowerCase()
4. 마무리
작성한 코드가 정상 코드로 확인받을 수 있지만, 아래처럼 더 간결하게 짤 수 있다.
향상된 for문을 사용해서 만들 수 있다는 것을 알고 있었지만 배열로 흩어진 char 형식을 어떻게 다시 붙여야 하나..
고민하다가 찾아본 결과, 처음엔 String으로 받아 ans += Character.toLowerCase(a) 이런 식으로 문자들을 더했다.
결과는 성공적으로 나오긴 했지만 별로 좋은 코드는 아니었다.
StringBuilder를 사용해 append로 문자들을 합쳐 리턴하는 형식으로 코드를 줄일 수 있었다.
[StringBuilder]
- String끼리 더하는 방법은 메모리할당과 해제를 발생.
- 덧셈 연산이 많아지면 성능저하의 원인이 될 수 있다.
[아스키코드사용]
또 하나의 방식은 아스키코드를 사용하는 것이다.
- 대소문자 차이는 10진수로 32 차이가 난다.
- char a변수에 10진수에 따라 32를 더하거나 빼면 대소문자로 변환이 가능하다.
아스키코드로 변환이 가능하다는 건 생각도 안 해봤는데 열심히 짠 코드에 뿌듯해할게 아니었다. 에혀
'알고리즘(Algorithm)' 카테고리의 다른 글
[Algorithm] 중복문자제거 (0) | 2023.03.24 |
---|---|
[Algorithm] 특정 문자 뒤집기 (0) | 2023.03.23 |
[Algorithm] 단어 뒤집기 (0) | 2023.03.13 |
[Algorithm] 문장 속 단어 (0) | 2023.03.10 |
[Algorithm] 문자열 찾기 (0) | 2023.03.06 |