별을 오른쪽 정렬시켜 출력해야하는 문제다.
예를 들어 5줄로 별을 찍도록 n=5로 입력받았다면,
----*
---**
--***
-****
*****
이런식으로 라인별로 '공백찍기 + 별찍기' 를 해야한다.
내 코드에는 for문이 총 3개로, 바깥 for문 1개, 안쪽 for문 2개로 구성되어 있다.
바깥 for문은 i가 관리해주고 있다. i는 몇번째 줄인지를 의미한다.
안쪽 for문 2개중 k가 관리하는 for문은 공백찍기,
j가 관리하는 for문은 별찍기를 담당한다.
이런 헷갈리는 for문 문제는 for문 내부를 과감히 1로 초기화하고 <대신 <=를 사용하는 게 쉽다.
그리고 직접 예시를 들어 확인해보면 상황 파악이 빨라진다.
위의 예시에서 첫번째 출력은
----*
공백이 4칸, 별이 하나다.
1. 공백찍기 : 4는 고정된 값이 아니라 계속 변하는 값이니 for문으로 관리한다.
첫번째 줄이라서 4칸인거고, 두번째 줄에서는 3칸, 세번째 줄에서는 2칸, ... 이렇게 바뀌어가니깐
5-i 구나 하고 알 수 있다. ( i는 몇번째 줄인지 )
이때 이 5가 가장 첨에 입력받은 n값이다.
그래서 n - i 가 코드 사진 line10의 for문 안에 들어가게 된거다.
근데 왜 < 일까? k < n - i 라고 되어 있으면 k가 n - i일땐 for문을 안 돌게 되는데?
그건 k의 시작을 0으로 했기 때문이다.
아까 for문이 헷갈릴땐 1로 과감히 초기화하고 < 대신 <= 를 사용하라고 했는데,
이 for 문의 index가 직접적으로 사용되지 않고 그냥 몇번 반복할지를 의미하는 카운트용이라면
그냥 관용적으로 0으로 초기화하고 깔끔하게 <를 사용하는게 좋다.
2. 별찍기 : 공백찍기보다 쉽다.
첫번째 줄엔 1개 찍기, 두번째 줄엔 2개 찍기, ... 이므로
코드사진의 line11을 보면 for(j=0; j<i; j++) 라고 되어있다.
카운트용이므로 j가 0으로 초기화되어있고, 이때 i번 반복하겠다는 뜻이다.

질문, 잘못된 내용, 새로운 의견 모두 환영입니다 ㅎㅎ
댓글 주세요~!
'백준' 카테고리의 다른 글
여름방학 백준 스터디 후기 + 완벽주의 대한 생각 정리 (0) | 2023.09.03 |
---|---|
[C++] 11000번 강의실 배정 - 문제 해결 Point (0) | 2023.08.07 |
[백준 PS 스터디] 5주차 진단 (1) | 2023.08.04 |
[무작정 백준 풀기] 3주차 느낀점 (0) | 2023.07.22 |
[C++/백준 1주차] Bronze5 ~ Silver2 문제 풀면서 인상깊었던 내용 (0) | 2023.07.07 |