[로직]이등변 삼각형 출력 로직 , 큰 이등변 삼각형 작은 이등변 삼각형 출력 하기

 

  • 아는 동생이 컴퓨터공학과 대학교 과제라고 하면서 보내온 큰 바람개비, 작은 바람개비 동시에 출력하기.
  • 이게 정답 로직은 아니지만 이왕 만든김에 포스팅 합니다.
  • 필자의 경우 PHP 언어가 편해서 PHP로 작성하였음.
    • 필요한경우 변수선언,출력형태만 바꿔 사용하세요

 

1.왼쪽에 큰 이등변 삼각형, 오른쪽에 작은 이등변 삼각형을 출력하시오

 

  • 문제) #7 , #8 알고리즘을 구하시오. 
    • 왼쪽에 큰 이등변 삼각형 9*5
    • 한칸 띄고 (열 한칸 띄우고)
    • 오른쪽에 작은 이등변 삼각형  5*3 을 출력하시오

 

2. 풀이

 

 

  • 1) 행 열의 갯수를 먼저 살펴봐야 한다.
    • 9*5, 한칸 열 띄우고, 5*3 의 경우
    • 총 행은 9행
    • 총 열은 9열 ( 큰 이등변삼각형 5열, 띄어쓰기1열, 작은 이등변삼각형 3열)
  • 2) 규칙을 찾아라
    • 반복문을 몇개를 써야하는지 코딩하기 전에 알고리즘을 생각해봐야 된다.
    • 필자의 경우 심심풀이로 해서 코드 간소화 까지 생각하지는 않았다.
    • 코드를 아래 적어 놓겠으니 참고하시고 이해안가면 댓글로 물어봐주세요 ㅎ
    • 이해가 안가시는 분은 자신만의 방정식을 찾아보세요!
  • 3) 필자는 웹개발자이기 때문에 출력을 가독성있게 하기위해 테이블 사용함.
    • 과제하는사람들은 알아서 고쳐 쓰세요 ^^;;

 

function get_Isosceles_triangle_table(){
    $return = "<table border='1' id='tableleft'>";
    for ($i = 1; $i <= 9 ; $i++){
        $return .= "<tr>";
        for ($j = 1 ; $j <= 9 ; $j ++){
            if($j <= 5){ // 왼쪽 삼각형 9*5
                if($i <= 5){
                    if($i >= $j){
                        $return .= "<td bgcolor='#ff8c00'>*</td>";
                    }else{
                        $return .= "<td>&nbsp;</td>";
                    }
                }else{
                    $x = $i-5;
                    if($j <= 5-$x){
                        $return .= "<td bgcolor='#ff8c00'>*</td>";
                    }else{
                        $return .= "<td>&nbsp;</td>";
                    }
                }

            }else if($j == 6){ //띄어쓰기
                $return .= "<td>&nbsp;</td>";
            }else{ // 오른쪽 삼각형 5*3
                if($i <= 3){ // 오른쪽 작은삼각형 중간포함 윗부분
                    $x = 6+$i;
                    if($x >= $j){
                        $return .= "<td bgcolor='#ff8c00'>*</td>";
                    }else{
                        $return .= "<td>&nbsp;</td>";
                    }
                }else{ // 오른쪽 작은삼각형 중간제외 밑부분
                    if($i <= 5){
                        $x = $i-3;
                        if($j <= 9-$x){ // 총 열 - 작은다이아 중앙 이후 4열 - 작은다이아 중앙 위 3 = 1만큼 빼준 값이 빈값.
                            $return .= "<td bgcolor='#ff8c00'>*</td>";
                        }else{
                            $return .= "<td>&nbsp;</td>";
                        }
                    }else{
                        $return .= "<td>&nbsp;</td>";
                    }
                }

            }
        }
        $return .= "</tr>";
    }
    $return .= "</table>";
    return $return;
}

function get_Isosceles_triangle2_table(){
    $return = "<table border='1'  >";
    for ($i = 1; $i <= 9 ; $i++){
        $return .= "<tr>";
        for ($j = 1 ; $j <= 9 ; $j ++){
            if($j <= 5){ // 왼쪽 삼각형 9*5
                if($i <= 5){
                    $x = 6-$i; // 6-$i 만큼의 값이 왼쪽 공백값.
                    if($j >= $x){
                        $return .= "<td bgcolor='#bdb76b'>*</td>";
                    }else{
                        $return .= "<td>&nbsp;</td>";
                    }
                }else{
                    $x = $i-5;
                    if($j > $x){ // 열 이 x값보다 클때 *표시.
                        $return .= "<td bgcolor='#bdb76b'>*</td>";
                    }else{
                        $return .= "<td>&nbsp;</td>";
                    }
                }

            }else if($j == 6){ //띄어쓰기
                $return .= "<td>&nbsp;</td>";
            }else{ // 오른쪽 삼각형 5*3
                if($i <= 3){ // 오른쪽 작은삼각형 중간포함 윗부분
                    $x = 10-$i;
                    if($j >= $x){
                        $return .= "<td bgcolor='#bdb76b'>*</td>";
                    }else{
                        $return .= "<td>&nbsp;</td>";
                    }
                }else{ // 오른쪽 작은삼각형 중간제외 밑부분
                    if($i <= 5){
                        $x = $i-3;
                        if($j >= 7+$x){ // 작은다이아는 7열부터 시작, 7 + 행의 3의 값이 왼쪽 공백값.
                            $return .= "<td bgcolor='#bdb76b'>*</td>";
                        }else{
                            $return .= "<td>&nbsp;</td>";
                        }
                    }else{
                        $return .= "<td>&nbsp;</td>";
                    }
                }

            }
        }
        $return .= "</tr>";
    }
    $return .= "</table>";
    return $return;
}

$triangle = get_Isosceles_triangle_table();
$triangle2 = get_Isosceles_triangle2_table();

$arr = array($triangle,$triangle2);

foreach ($arr as $key){
    echo $key;
}

결과 값, get_Isosceles_triangle_table 가 왼쪽, get_Isosceles_triangle_table2 가 오른쪽