- 아는 동생이 컴퓨터공학과 대학교 과제라고 하면서 보내온 큰 바람개비, 작은 바람개비 동시에 출력하기.
- 이게 정답 로직은 아니지만 이왕 만든김에 포스팅 합니다.
- 필자의 경우 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> </td>";
}
}else{
$x = $i-5;
if($j <= 5-$x){
$return .= "<td bgcolor='#ff8c00'>*</td>";
}else{
$return .= "<td> </td>";
}
}
}else if($j == 6){ //띄어쓰기
$return .= "<td> </td>";
}else{ // 오른쪽 삼각형 5*3
if($i <= 3){ // 오른쪽 작은삼각형 중간포함 윗부분
$x = 6+$i;
if($x >= $j){
$return .= "<td bgcolor='#ff8c00'>*</td>";
}else{
$return .= "<td> </td>";
}
}else{ // 오른쪽 작은삼각형 중간제외 밑부분
if($i <= 5){
$x = $i-3;
if($j <= 9-$x){ // 총 열 - 작은다이아 중앙 이후 4열 - 작은다이아 중앙 위 3 = 1만큼 빼준 값이 빈값.
$return .= "<td bgcolor='#ff8c00'>*</td>";
}else{
$return .= "<td> </td>";
}
}else{
$return .= "<td> </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> </td>";
}
}else{
$x = $i-5;
if($j > $x){ // 열 이 x값보다 클때 *표시.
$return .= "<td bgcolor='#bdb76b'>*</td>";
}else{
$return .= "<td> </td>";
}
}
}else if($j == 6){ //띄어쓰기
$return .= "<td> </td>";
}else{ // 오른쪽 삼각형 5*3
if($i <= 3){ // 오른쪽 작은삼각형 중간포함 윗부분
$x = 10-$i;
if($j >= $x){
$return .= "<td bgcolor='#bdb76b'>*</td>";
}else{
$return .= "<td> </td>";
}
}else{ // 오른쪽 작은삼각형 중간제외 밑부분
if($i <= 5){
$x = $i-3;
if($j >= 7+$x){ // 작은다이아는 7열부터 시작, 7 + 행의 3의 값이 왼쪽 공백값.
$return .= "<td bgcolor='#bdb76b'>*</td>";
}else{
$return .= "<td> </td>";
}
}else{
$return .= "<td> </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 가 오른쪽
댓글