- 아는 동생이 컴퓨터공학과 대학교 과제라고 하면서 보내온 큰 모래시계, 작은 모래시계 동시에 출력하기.
- 이게 정답 로직은 아니지만 이왕 만든김에 포스팅 합니다.
- 필자의 경우 PHP 언어가 편해서 PHP로 작성하였음.
- 필요한경우 변수선언,출력형태만 바꿔 사용하세요
1.왼쪽에 큰 모래시계, 오른쪽에 작은 모래시계를 출력하시오
- 문제)
- 왼쪽에 큰 모래시계 9*9 (9,7,5,3,1,3,5,7,9)
- 한칸 띄고 (열 한칸 띄우고)
- 오른쪽에 작은 모래시계 (5,3,1,3,5) 를 출력하시오
2. 풀이
- 1) 행 열의 갯수를 먼저 살펴봐야 한다.
- 9*9, 한칸 열 띄우고, 5*5 의 경우
- 총 행은 9행
- 총 열은 15열 ( 큰모래시계 9열, 띄어쓰기1열, 작은모래시계 5열)
- 2) 규칙을 찾아라
- 반복문을 몇개를 써야하는지 코딩하기 전에 알고리즘을 생각해봐야 된다.
- 필자의 경우 심심풀이로 해서 코드 간소화 까지 생각하지는 않았다.
- 큰 모래시계의 경우 중간 5행은 가운대 중심 열만 '*' 표시 해야했고
- 위에 1~5는 , 행의 값( x값 ) - 1 을 기준으로 열의 값이 그보다 크거나 , 총 열(9) - x보다 작거나 같을때,
- 아래 6~9는, x =현 재행 - 5(6행 부터 시작함으로) 를 중심으로
- 열의값이 5(중심열) - x 보다 크거나 같고, 5(중심열) + x 보다 작거나 같은 조건을 만족할 때
- '*'을 출력했다.
- 10열은 띄워야 해서 공란
- 작은 모래시계의 경우 3행 보다 작을 경우 x = 현재 행 - 1을 기준으로
- 11열부터 시작이기 때문에 y = 10 + 현재 행,
- 열이 y값보다 크거나 같고, 15-x값보다 작거나 같은 경우 '*'을 표시
- 그 이외에 공란.
- 4행 이상, 6행 미만의 경우
- x = 현재 행 - 3으로 초기값 설정 후
- 현재 열이 13-x보다 크거나 같고, 13+x보다 작거나 같을 경우 '*'를 표시.
- 그 이외에 공란
- 이해가 안가시는 분은 자신만의 방정식을 찾아보세요!
- 3) 필자는 웹개발자이기 때문에 출력을 가독성있게 하기위해 테이블 사용함.
- 과제하는사람들은 알아서 고쳐 쓰세요 ^^;;
function get_Hourglass_table(){
$return = "<table border='1' id='tableleft'>";
for ($i= 1 ; $i <= 9 ; $i++){
$return .= "<tr>";
for($j=1; $j <=15 ; $j++){
if($j<=9){ //큰 모래시계
if($i <= 5){
$x = $i-1;
if($j > $x && $j <= 9-$x){
$return .= "<td bgcolor='#8a2be2'>*</td>";
}else{
$return .= "<td> </td>";
}
}else{
$x = $i-5;
if($j >= 5-$x && $j <= 5+$x){
$return .= "<td bgcolor='#8a2be2'>*</td>";
}else{
$return .= "<td> </td>";
}
}
}else if($j==10){ //띄움
$return .= "<td> </td>";
}else{ //작은 모래시계
if($i <=3 ){
$x = $i -1;
$y = 10+$i;
if($j >= $y && $j <= 15-$x){
$return .= "<td bgcolor='#8a2be2'>*</td>";
}else{
$return .= "<td> </td>";
}
}else if($i < 6){
$x = $i -3;
if($j >= 13-$x && $j <= 13+$x){
$return .= "<td bgcolor='#8a2be2'>*</td>";
}else{
$return .= "<td> </td>";
}
}else{
}
}
}
$return .= "</tr>";
}
$return .= "</table>";
return $return;
}
$Hourglass = get_Hourglass_table();
echo $Hourglass;
'Language > PHP' 카테고리의 다른 글
[로직]바람개비 출력 로직 , 큰 바람개비 작은 바람개비 출력 하기 (4) | 2020.04.23 |
---|---|
[로직]다이아몬드 출력 로직 , 큰 다이아 작은 다이아 출력 하기 (2) | 2020.04.23 |
[로직]이등변 삼각형 출력 로직 , 큰 이등변 삼각형 작은 이등변 삼각형 출력 하기 (1) | 2020.04.23 |
PHP htmlspecialchars() 사용 시 특정 한글 깨짐 현상 해결 (0) | 2020.04.17 |
PHP Warning: gzinflate(): stream error in 오류 해결하기 (0) | 2020.04.08 |