readVertically

이용만·2023년 3월 24일
0

문제
문자열을 요소로 갖는 배열을 입력받아 문자열을 세로로 읽었을 때의 문자열을 리턴해야 합니다.

입출력예시

String[] input = new String[]{
  "hello",
  "wolrd",
};
String output = readVertically(input);
System.out.println(output); // --> "hweolllrod"
input = new String[]{
  "hi",
  "wolrd",
};
output = readVertically(input);
System.out.println(output); // --> "hwiolrd"
import java.util.*;

public class Solution { 
	public String readVertically(String[] arr) {
    //가장 긴 문자열의 길이를 검색합니다.
		int maxLength = 0;

    for(int i=0; i<arr.length; i++){
			if(maxLength < arr[i].length()) maxLength = arr[i].length();
		}

    //임시로 해당 길이만큼의 배열을 선언한 뒤,
    String[] answer = new String[maxLength];
    //기존의 배열을 순회합니다.
    for(int i = 0; i<arr.length; i++) {
			String str = arr[i];
      //해당 배열의 요소인 문자열을 순회합니다.
      for(int j=0; j<str.length(); j++) { 
        //임시 배열이 비어있다면
        if( answer[j] == null) {  
          //문자열의 j번째 char를 String으로 변환후 배열에 삽입 (세로위치 첫 문자열)
          answer[j] = Character.toString(str.charAt(j));
          //임시 배열이 비어있지 않다면, 임시 배열의 기존 문자열에 현재 j번째 char를 더해줍니다.
        } else {
          answer[j] = answer[j] + str.charAt(j);
        }
      }
    }
    //배열을 순회하며 String으로 변환합니다.
    String result = "";
		for(int i = 0; i < answer.length; i++){
			result = result + answer[i];
		}

    return result;
  }
}

Character.toString(char c) : char를 String으로 변환하는 메서드.

문제를 풀 때 생각을 잘못했었다. 입출력 예시를 보고 첫 요쇼와 둘째 요소만이 들어오고 둘째요소가 항상 길겟거니와 생각하고 로직을 짯지만 테스트 결과는 All 레드였다.
그리고 글자 길이 상관 없고 3개 이상의 요소도 들어왔다. 고민하고 고민한 끝에 안나와서 레퍼런스 코드를 보았다.. 보고나서 매일 '아....' 한다. 땅굴 파지 말고 그 시간에 포기하지말고 계속 풀자.

profile
성장하는 개발자가 되고자 합니다.

0개의 댓글