프로그래머스 연습문제 이상한 문자 만들기 파이썬 풀이
문제 정리
- 단어는 하나 이상의 공백문자로 구분되어 있다.
- 단어의 짝수번째 알파벳은 대문자로 변경
- 단어의 홀수번째 알파벳은 소문자로 변경
- 변경된 문자열을 리턴하여라
- 첫 번째 글자는 0번째 인덱스로 본다
대소문자 변환(파이썬)
upper 함수와 lower함수를 이용하여 바꿀 수 있습니다.
대문자 변환
s = "abc"
new = s.upper()
print(new) # ABC
소문자 변환
s = "ABC"
new = s.lower()
print(new) # abc
대소문자 변환(자바)
자바의 경우 string에 대소문자 변환 메소드가 있습니다. 이를 이용합니다.
대문자 변환
String s = "abc";
String new = s.toUpperCase();
System.out.println(new); // ABC
소문자 변환
String s = "ABC";
String new = s.toLowerCase();
System.out.println(new); // abc
문제 풀이
처음에는 split을 통해 단어로 나눈다음 2중 for문을 통해 구현하려 했다.
하지만 그렇게 하면 단어 사이에 2개 이상의 공백이 있는 경우 알 수 없다.
그래서 문자를 하나씩 탐색하며 하기로 하였다.
- for문으로 모든 문자를 하나씩 탐색합니다.
- 문자가 공백이 아닌 경우 idx가 짝수 인지 홀수인지 판단한다.
- 홀수인 경우 lower를 이용하여 소문자로, 짝수인 경우 upper를 이용하여 대문자로 변환하여 new 문자에 추가한다. 그리고 idx를 증가시킨다.
- 공백인 경우 idx를 0으로 초기화 시킨다. 다음 단어가 시작되기 때문이다. 그리고 공백을 new에 추가한다.
이상한 문자 만들기 파이썬 코드
def solution(s):
new = "" # 변경된 새 문자
idx = 0 # 단어의 index
# 문자 하나씩 꺼내기
for c in s:
# 공백이 아닌 경우 홀수/짝수 idx인지 나누기
if c != ' ':
if idx % 2 == 0:
new += c.upper()
else:
new += c.lower()
idx+=1
else:
# 공백인 경우 공백 추가하고 idx 초기화
new += " "
idx=0
return new
이상한 문자 만들기 자바 코드
탐색은 charAt을 이용해 문자로 하거나 substring을 이용해 문자 하나를 뽑아낼 수 있습니다.
그리고 대소문자 변환 메소드는 String에만 있으므로 이를 이용하기 위해 String으로 변환해주어야 합니다.
class Solution {
public String solution(String s) {
String ans = "";
int idx = 0;
for(int i=0; i<s.length(); i++){
if( s.charAt(i) != ' '){
if( idx % 2 == 0)
ans += String.valueOf(s.charAt(i)).toUpperCase();
else
ans += String.valueOf(s.charAt(i)).toLowerCase();
idx++;
}
else{
ans += " ";
idx = 0;
}
}
return ans;
}
}