문제 바로가기
https://www.acmicpc.net/problem/2439
관련 알고리즘
- 해당 없음
정답 및 해설
자연수 N을 입력받아서 예제 출력과 동일한 양식으로 *을 출력하는 문제이다.
예제 출력을 통해 우측 끝으로 정렬된 *을 1개, 2개, 3개,... N개까지 출력하는 문제이다.
* 문자의 좌측을 공백으로 Padding해서 (채워서) 해결할 수 있다.
C++
더보기
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=1; i<=n; i++){
for(int k=i; k<n; k++)
cout<<' ';
for(int k=0; k<i; k++)
cout<<'*';
cout<<'\n';
}
}
Line | 해설 |
6 | for 문을 통해 i 를 1부터 n까지 반복한다. 이때 통상 for(i=0; i<n; i++) 로 사용하나 해당 해설의 경우 for(i=1; i<=n; i++) 로 i 의 범위가 1 ~ n 로 설정했음에 유의하자.1) i 의 범위를 0 ~ n-1로 설정했다면 7번, 9번 라인에서 k 의 범위를 맞게 수정해주면 된다. |
7~8 | for 문을 통해 k 를 i ~ n-1 반복하며 ' '(공백)을 출력한다. ex) n=5, i=1 이면 k 는 1 ~ 4 즉, 4번 실행되는 것이다. (4칸의 공백)'*' |
9~10 | for 문을 통해 k 를 0 ~ i-1 반복하며 '*'을 출력한다. ex) n=5, i=1 이면 k 는 0 ~ 0 즉, 1번 실행되는 것이다. " "'*' |
1) i 범위를 0 ~ n 으로 설정한 풀이는 C언어에 작성해 두었다. for 문의 구조는 동일하니 필요시 참고하면 될 것이다.
C
더보기
#include<stdio.h>
int main(){
int n;
cin>>n;
for(int i=0; i<n; i++){
for(int k=i; k<n-1; k++)
printf(" ");
for(int k=0; k<i+1; k++)
printf(" ");
printf("\n");
}
}
Line | 해설 |
5 | for 문을 통해 i 를 0 ~ n-1 반복한다. |
6~7 | for 문을 통해 k 를 i ~ n-2 반복하며 ' '(공백)을 출력한다. ex) n=5, i=0 이면 k 는 0 ~ 3 즉, 4번 실행되는 것이다. (4칸의 공백)'*' |
8~9 | for 문을 통해 k 를 0 ~ i 반복하며 '*'을 출력한다. ex) n=5, i=0 이면 k 는 0 ~ 0 즉, 1번 실행되는 것이다. " "'*' |
Python
더보기
n=int(input())
for i in range(1,n+1):
print(' '*(n-i)+'*'*i)
Line | 해설 |
1 | input 함수를 통해 정수를 입력받은 후, int 함수로 형변환1) 해준다. |
2 | for 문을 통해 i 를 1 ~ n 만큼 반복한다. |
3 | print 문을 통해 공백은 n-i 만큼 (n-1, n-2, n-3, ... 1, 0), *은 i만큼 (1, 2, 3, ... n-1, n) 출력한다. |
1) input 함수로 입력을 받으면 string 타입으로 입력된다. int(P) 함수는 P를 정수로 변환하는 함수이기에
int(input())으로 작성하여 입력받은 문자를 정수로 치환해야 2번 라인의 range 함수에 넣을 수 있다.
'Coding > BOJ' 카테고리의 다른 글
[BOJ 백준] 2577 - 숫자의 개수 (C / C++ / Python) (0) | 2023.11.05 |
---|---|
[BOJ 백준] 2562 - 최댓값 (C / C++) (0) | 2023.11.04 |
[BOJ 백준] 1157 - 단어 공부 (C / C++) (1) | 2023.11.03 |
[BOJ 백준] 1152 - 단어의 개수 (C / C++ / Python) (2) | 2023.11.01 |
[BOJ 백준] 1000 - A+B (C / C++ / Python) (0) | 2023.10.31 |