더북(TheBook)
w

정답

public String printTriangle(int num) {
    String star = "";
    for(int i = 0; i < num; i++) {
        for(int j = 0; j <=i; j++) {
            star+="*";
        }
        star+= "\n";
    }
    return star;
}

 

해설

입력받은 숫자에 맞게 삼각형을 만드는 문제입니다. printTriangle 메서드에서 출력하지 않고, 문자열로 반환해야 하는 문제이므로 결괏값을 담을 String 타입의 변수를 하나 선언합니다. 문자 *로 된 삼각형을 잘 보면 *을 반복해서 출력하는데 두 가지 패턴을 반복합니다.

 

먼저 입력한 num만큼의 줄을 출력하고, 각 줄을 출력할 때도 *을 반복적으로 출력합니다. 다시 정리해보면 각 줄을 출력하는 반복문을 반복하면 됩니다. 즉, 바깥쪽 반복문에서는 총 출력해야 하는 줄 수만큼 반복하게 하고, 안쪽 반복문에서 각 줄에서 출력해야 하는 *을 반복해서 출력하게 합니다.

 

바깥쪽 반복문 코드부터 생각해보면 인자로 받아온 값만큼 반복해주면 됩니다. 변수 i0부터 입력받은 수보다 작을 때까지 반복하게 하고, 안쪽의 반복문이 끝날 때 줄을 바꿔줍니다. 줄을 바꾸는 문자열은 ‘\n’이므로 결과를 저장하는 변수에 이 값을 누적해줍니다.

 

각 줄의 별은 첫 번째 줄에 한 개, 두 번째 줄에 두 개, 세 번째 줄에 세 개처럼 숫자를 하나씩 늘려가면서 출력합니다. 이때 반복문을 실행할 때마다 조건이 바뀌어야 하는데, 바깥쪽 반복문에서 사용하고 있는 변수 i0, 1, 2, ...로 바뀌고 있으므로 변수 i를 이용해서 조건식을 만들어줍니다. 반복문을 수행할 때마다 ‘*’을 하나씩 결과를 담는 변수에 누적해주면 원하는 결괏값을 얻어낼 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.