알고리즘

Merge Strings Alternately

해니01_15 2023. 9. 10. 10:39

문제는 아래와 같다. 대충 단어를 교차하여 조합해 보라는 말인 것 같다~~ 

 

내가 푼 코드 

class Solution {
	public String mergeAlternately(String word1, String word2) {
    
		int w1 = word1.length();
		int w2 = word2.length();

		StringBuilder sb = new StringBuilder();
		int i = 0;

		while (i < w1 || i < w2) {
			if (i < w1) {
				sb.append(word1.charAt(i));
			}
			if (i < w2) {
				sb.append(word2.charAt(i));
			}
			i++;
		}
		return sb.toString();
	}
}

 

한줄씩 코드를 해석해 보자면 

 

  1. 주어진 word1 과 word2 글자의 길이만큼 반복문을 돌아야 하기 때문에 각 단어의 길이를 ( length() ) 숫자로 바꾼다.  
  2. 문자를 이어 붙이고 어쩌고 저쩌고 해야 하니 StringBuilder 클래스를 생성 해준다. 
  3. 숫자 변수 i 역시 선언해준다. 
  4. 반복문을 작성 해 주는데 w1과 w2 중 더 긴 문자열의 길이만큼 반복해야 한다.
    즉, word1과 word2 중 어느 하나가 더 길어도 그 길이만큼 반복한다는 뜻이다. 따라서 or 인 || 를 사용해 주었다. 
  5. 현재 i가 word1의 길이 범위 내에 있는 경우, word1에서 i번째 문자를 가져와서 sb에 추가한다.
    문자열 추가는 append로 하며 charAt은 문자열에서 특정 위치에 있는 문자를 가져오는 메서드로 i 번째 문자를 가져와서 추가한다. 
  6. 같은 방식으로 w2도 진행해준다. 
  7. i++을 사용 하여 반복문에서 사용되는 i를 증가시켜 다음 문자를 처리한다.
  8. 그 후 StringBuilder 객체(sb)를 문자열로 반환해야 하므로 toString()을 이용하여 리턴값을 정해준다.