별 찍기 -1
문제는 다음과 같습니다.
입력한 N의 크기 만큼 반복하면서 반복하는 숫자 만큼 별을 출력하면 됩니다.
이는 문제를 접근하자마자 단순하게 For(반복문) 활용하여 문제를 해결하면 된다고 생각했습니다.
입력 조건으로 1<=N<=100이 제한되어 있습니다. 입력 조건의 크기도 크지 않고 시간복잡도를 생각 하지 않아도 될 만큼 입력 조건이 널널 하기 때문에, 저는 sys.stdin.readline() 을 사용하지 하고 바로 input() 을 사용했습니다.
하지만 주의 해야할 점이 있습니다. 단순하게 입력의 크기만큼 반복하게 되면 0부터 N-1까지를 반복하기 때문에 올바르지 않은 길이의 *가 출력됩니다. 따라서 for문의 범위를 잘 조정해야 합니다.
저의 해답 코드는 다음과 같습니다.
N= int(input())
for i in range(1,N+1):
print('*'*i)
정답 처리 된 것을 확인할 수 있습니다.
다음은 정답 비율을 보고 원인을 분석해보겠습니다. 또한 다른 사람의 공개된 오답 코드를 확인해 보겠습니다.
정답 비율은 약 62%로 높은 비율이 나왔지만, 문제의 난이도에 비해 기대할 만큼의 정답 비율이 나오지 않았다고 생각합니다.
제가 생각하기로는 For문의 범위를 조정하는데에 있어 실수를 야기 하지 않았나 생각합니다.
다음은 다른 사람의 공개된 오답 코드입니다.
1.
저의 예상과는 다르게 첫번째 오답 코드는 출력 형식에 문제가 있었다고 생각했습니다. 하지만 코드를 더욱 자세히 보니 print()보다는 N의 범위 조정에 문제가 있었습니다. 즉 저의 예상이 맞았습니다,
'*' * N을 곱해주면 그 수만큼 문자열이 반복하게 되는데
이분의 코드는 이중 for문을 사용하여서 그 수 만큼 출력하게 했습니다. jupyter 혹은 다른 스페이스에서 실행 해 본다면 올바른 출력값이 나왔다고 생각할 수 있습니다. 하지만 N의 범위를 잘못 지정했습니다. N의 범위가 올바르지 않기 때문에 처음에는 for문에서 0만큼이 실행이 될 것이고 그렇다면 print()만 처음에 실행 될 것입니다. 그렇다면 처음에 기대하던 출력값인 '*'이 나오지 않고 공백만 나오게 되므로 오답으로 처리 된 것입니다.
다음은 제가 직접 수정한 다른 사람의 코드입니다.
N의 범위만 조정하였습니다.
N = int(input())
for i in range(1,N+1):
for j in range(i):
print('*', end = '')
print()
두가지 경우 모두 올바르게 정답 처리 된 것을 확인할 수 있습니다.
'BaekJoon Reivew' 카테고리의 다른 글
단계별로 풀어보기 백준_10952번 (0) | 2025.03.17 |
---|---|
단계별로 풀어보기 백준_2439번 (2) | 2025.02.18 |
단계별로 풀어보기 백준_11022번 (2) | 2025.02.07 |
단계별로 풀어보기 백준_11021번 (0) | 2025.02.07 |
단계별로 풀어보기 백준_15552번 (0) | 2025.02.07 |