반응형
내 풀이
반절 피라미드 쌓기
import sys
input = sys.stdin.readline
T = int(input().rstrip())
for i in range(1, T + 1):
print(f"{i * "*"}")
결과: 정답
더 옳은 정답
N = int(input())
for i in range(1, N + 1):
print('*' * i)
내가 만든 것의 문제점은 마지막에 print(f"")구문을 넣어 필요없는 부분을 만든 것이다.
이점을 생각하여 좋은 코드를 작성하도록 해야겠다.
고찰
질문: 문제를 정확히 분석하는 과정"에서 중요한 요소는 무엇일까?
문제를 정확히 분석하는 과정에서 중요한 요소는 다음과 같다:
1. 문제의 요구 사항 파악
- 문제의 본질 이해: 문제에서 요구하는 핵심 기능이나 목표를 파악한다. 예를 들어, 주어진 숫자들에 대해 무엇을 해야 하는지, 출력 형식은 어떤지를 정확히 이해하는 것이 첫 번째 단계다.
- 제약 조건 파악: 문제에서 주어진 조건(입력 범위, 시간 제한 등)을 잘 분석하여, 그것을 고려한 해결 방법을 구상해야 한다. 예를 들어, 입력값이 크다면 시간 복잡도를 고려해 효율적인 알고리즘을 선택해야 할 수 있다.
2. 입력과 출력 형식의 이해
- 입력 예시와 출력 예시 분석: 문제에서 제공되는 예시를 통해 어떤 방식으로 데이터를 처리하고 출력해야 하는지 명확히 알 수 있다. 예시를 통해 함수나 알고리즘의 동작 방식을 직관적으로 파악할 수 있다.
- 구체적인 출력 요구 사항: 출력 형식이 중요한 경우(예: 공백을 하나 빼거나 추가하는 등의 차이로 틀린 답이 나올 수 있음), 이를 정확히 반영할 수 있도록 주의해야 한다.
3. 핵심 알고리즘 또는 전략 구상
- 문제 해결을 위한 접근 방법: 문제를 풀기 위해 어떤 알고리즘을 사용할지, 어떤 자료구조가 유용할지를 미리 생각해본다. 예를 들어, 이진 탐색, 동적 계획법(DP), 그래프 탐색, 정렬 등 여러 알고리즘 중 어떤 것이 문제에 적합할지를 파악하는 과정이 중요하다.
- 시간 복잡도와 공간 복잡도 고려: 문제의 입력 크기와 제약을 고려하여, 주어진 시간 내에 문제를 해결할 수 있는지 판단한다. 너무 비효율적인 알고리즘을 사용하면 시간 초과가 날 수 있기 때문에 성능을 고려한 설계가 중요하다.
4. 경우의 수와 예외 처리
- 예외적인 입력 상황 고려: 문제에서 주어지는 입력에 대해 특수한 경우나 예외가 있을 수 있다. 예를 들어, 입력값이 0인 경우나 부호가 있는 숫자들이 포함된 경우를 고려해야 할 수 있다.
- 다양한 테스트 케이스 고려: 다양한 입력 케이스(정상적인 값, 최소/최대 값, 예외적인 값 등)를 상상해보고, 그런 경우에 대한 처리가 제대로 될 수 있는지 점검한다.
5. 구현 계획 세우기
- 단계별 구현: 문제 해결을 위한 계획을 세울 때, 큰 문제를 작은 부분으로 나누어 단계별로 구현할 수 있도록 한다. 각 부분을 나누어 처리하면 오류를 줄일 수 있다.
- 순차적으로 해결: 먼저 해결할 수 있는 부분부터 처리하고, 나중에 해결해야 할 복잡한 부분을 차근차근 처리하는 접근 방식이 필요하다.
6. 효율성 고려
- 불필요한 작업을 줄이기: 중복 계산을 피하고, 필요 없는 변수나 연산을 없애는 방법을 고려한다. 예를 들어, 입력을 한 번에 처리하고 반복문을 최소화하는 방법을 구상할 수 있다.
- 적절한 자료구조 선택: 예를 들어, 리스트나 딕셔너리, 세트 등 여러 자료구조 중 가장 적합한 자료구조를 선택하는 것이 문제 해결을 효율적으로 만들 수 있다.
7. 디버깅과 검증
- 테스트 케이스 검증: 구현한 코드가 모든 경우에 대해 제대로 동작하는지 확인하기 위해 다양한 테스트 케이스를 실행해 본다.
- 디버깅: 코드가 예상한 대로 작동하지 않는다면, 중간 결과를 출력하거나 변수 값을 추적하는 방법으로 디버깅을 진행한다.
반응형
'Coding Test (코딩 테스트)' 카테고리의 다른 글
코딩테스트 9일차(2025.01.23) - 혼자 놀기의 달인(프로그래머스) (0) | 2025.01.23 |
---|---|
코딩테스트 9일차(2025.01.23) - 백준2438번(별 찍기 - 1) (1) | 2025.01.23 |
코딩테스트 9일차(2025.01.23) - 11022번(A+B - 8) (0) | 2025.01.23 |
코딩테스트 9일차(2025.01.23) - 11021번(A+B - 7) (0) | 2025.01.23 |
코딩테스트 8일차(2025.01.22) - 15552번(빠른 A+B) (0) | 2025.01.22 |