Yim-HaEun

[Java] 반복문 별(*)출력 유형 문제 풀이(반복문) 본문

Java/문제풀이 및 알고리즘

[Java] 반복문 별(*)출력 유형 문제 풀이(반복문)

Yim_Ha_Eun 2023. 9. 11. 12:09

안풀리는 문제 또는 생각해야하는 문제들을 모아서

결과가 왜 그렇게 나왔는지 개인적으로 생각을 정리해서 쓰는 곳입니다.

 

 

 

 

 

 

보통 처음엔 왼쪽 벽에 붙어서 시작하는 별출력 문제를 내는데 

 

 

이번에 풀어야하는 문제는 오른쪽에 붙여서 출력하는 문제입니다.

 

 

<생각하기>

-이중 for문을 이용해서 별 옆에 공백을 만들어 "같이" 출력해보자

-공백을 출력하는 반복문을 이용해 큰 숫자부터 작은 숫자로 거꾸로 출력하면 될 것 같다.

 

for문을 이렇게 추가해봤는데

저기에 추가하는건 아닌가보다..ㅎ

 

K for문 출력에 println을 써서 저렇게 나옴.

다시 System.out.print로 바꿔준 뒤 

 

 

 

같은 줄에 큰수부터 작은수까지 &nbsp;거꾸로 공백을 출력하는 반복문을 넣어봤는데
? ㅜ..ㅜ

 

왜 안줄어들지? 하고 이리저리 바꿔봤는데

 

[K >= i로 고치니까 해결됨.]

 

돌아가는 걸 생각해보면

맨 위의 i for문은 그냥 줄바꿈을 몇 번 할건지?에 대한 반복문이다.

 

반복문안의 반복문이라  int k for문 = 공백 출력 개수여서

 int i =1 일때 int k for문은 4~1 범위가 되고(4,3,2,1)   4공백 출력하고난 뒤, 줄바꿈.

 

i =2일때, k for 문은 4~2범위라(4,3,2)  3개 출력 뒤 줄바꿈,

 

i=3일때, k for문은 4~3범위라(4,3)  2개 출력 뒤 줄바꿈,

 

i =4일 때, k for문은 범위가 4~4되어(4)  1개만 출력 뒤 줄바꿈이 반복되는 형태가 된다. 

 

별출력은 원래 됐었으니까 공백뒤에 별 출력하기를 하면 

 

 

 

 

문제 해결

 


 

<생각하기>

줄바꿈하는 반복문 안에

별을 늘리는 반복문,

줄바꿈하는 또다른 반복문 안에그 아래 다시 별을 줄이는 반복문

 

가운데 부분이 두번 출력되기때문에 두번째 반복문 범위를 다시 설정해준다.

 

문제해결

 

 

 

 


<생각해보기>

트리를 반으로 나눠서 반복문으로 출력해보자.

왜 안나오지 했는데 또 println 써서 저렇게 나온거였다.

또 줄바꿈 for문도 위치가 이상하고

뒤에 붙이는 별 범위도 2부터 시작하는거로 바꿔줘야 원하는 출력값이 나온다.

K for문 범위도 바꿔주고, 줄바꿈 반복문 위치도 제대로 맞춰줬다.
해결.


<생각해보기>

이중for문과 if문을 활용하여 출력

for1// 행

for2 //열 

if(1for문(행)이 첫번째 줄이거나 마지막줄이거나 2for문(열)에서 첫번째거나 마지막이면) //OR 사용

별 출력;

else 공백 출력

 

 

 

 

if문을 사용해 별출력

j는 열을 의미하고, j==1(열에서 첫번째)/ j ==num(열에서 마지막)