알고리즘 테스트# 2. 이상한 문자열 만들기
안녕하세요.
프로그래머스에 있는 "이상한 문자열 만들기" 알고리즘 문제를 풀어보겠습니다.
문제 : 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수를 만드세요.
출력 결과 :
입력값 〉 | "try hello world" |
기댓값 〉 | "TrY HeLlO WoRlD" |
코드 :
* 문제 해설 *
문자열을 공백기준으로 잘라서 words 배열에 대입
바깥쪽 for문의 words를 반복
안쪽 for문의 바깥쪽 for문의 인덱스값을 대입 후 문자열값을 한글자씩 자른 후 배열에 대입
짝수인경우 대문자 대입 후 마지막 단어 전 까지 공백 대입
가장 중요한 split()함수를 사용하는방법
split(" , 0) 혹은 split( )의 경우abc 에서 값이 없는 c뒷부분을 제거하기때문에 [a],[b],[c]로 반환
*반면 0보다 작은 -1을 지정한 split( ",-1)은 구분자로 나눈 모든 결과값을 반환하기떄문에 [a],[b],[c],[ ]로 반환*
* 코드 해설 *
문자열 : "try hello world"
문자열인 try hello world 값을 split(" ")으로 공백 제거 words 배열에 대입
words 배열 결과값
words[0] = try
words[1] = hello
words[2] = world
바깥쪽 for문의 words[0]를 한번 반복 후
안쪽 for문의 words[i] == words[0]으로 만든후
words[0]의 값인 try 값을 split(" ")함수로 한글자씩 잘라서 String[] c에 대입
c 배열 결과값
c[0] = t
c[1] = r
c[2] = y
그후 만약에 j의값이 0으로 떨어지면 짝수이므로 toUpperCase()함수를
이용하여 해당 c배열의 인덱스의 값을 대문자로 변환
그후 j의 배열이 종료가 된 후 한단어가 완성
완성된 배열을 마지막 배열 전까지 (i < words.length - 1) 반복 후
공백 대입
더 좋은 코드가 있는경우 공유 바랍니다~