https://www.acmicpc.net/problem/2439
백준 알고리즘 2439번 별 찍기 -2 문제를 C언어로 코딩하였습니다.
해당 문제에서는 사용자로부터 N을 입력 받고, N만큼의 행을 생기며, 공백을 포함한 별을 1개씩 늘지만 왼쪽부터 공백이 생기게 출력하도록 문제를 풀어야 된다.
이 문제를 해결하기 위한 핵심은 공백을 출력할 반복문과 *을 출력할 반복문을 나누어서 사용해야 된다는 점이다.
<풀이>
1. 입력받을 N, 반복문인 for에서 사용할 k, i, j를 변수로 선언해준다.
2. 사용자로부터 입력받기 위해 입력함수인 scanf()를 사용한다. => 자료형이 정수이므로 %d를 사용, scanf 에서는 print와는 달리 &(변수명)을 사용하여야 옳바른 주소로 이동할 수 있게 해준다.
3. 위 소스코드의 5번줄에서의 반복문은 쉽게 생각해서 N(=K)개의 행을 만들어준다고 생각하면 된다. => 행으로 만들기 위해서는 printf("\n") 을 12번줄에 입력해주었다.
4. 5번줄이 전체를 실행하는 반복문이라면 6번의 반복문과 9번의 반복문은 각각 공백과 별을 출력해주는 반복문이다.
4-1) for (i=1;i<=N-k;i+) 의 의미는 공백을 출력하는 내부 반복문으로 N-k 만큼 공백을 출력해준다.
=> 예시로 N=2일 때, 첫 번째 행은 2-1 -> 공백 1개 출력되고 두 번째 행은 2-2 -> 공백 0개가 출력된다.
4-2) for (j=1; j<=k; j++) 의 의미는 별을 출력하는 내부 반복문이다. => k(=N)만큼 별을 출력한다.
※만약 visual studio를 사용 시 입력함수인 scanf()에서는 따로 경고메시지가 뜨며 실행을 못한다. 때문에 경고메시지를 무시하도록 따로 설정해주거나 #define _CRT_SECURE_NO_WARNINGS 를 입력하여 경고메시지를 무시해준다.
[참고] https://gururuglasses.tistory.com/61, https://gabii.tistory.com/entry/BaekJoonC-%EB%B0%B1%EC%A4%80, 챗GPT
'백준(BaekJoon)' 카테고리의 다른 글
[BaekJoon/C] No.11022 : A+B-8 (0) | 2024.05.08 |
---|---|
[BaekJoon/C] No.2743 : 문자열 길이 재기 (0) | 2024.04.30 |
[BaekJoon/C] No.9086 : 문자열 (1) | 2024.04.30 |
[BaekJoon/C] No.2525: 오븐 시계 (1) | 2024.04.01 |
[BaekJoon/Python 3] No.18108 : 1998년생인 내가 태국에서는 2541년생?! (0) | 2024.03.27 |