젊은이의 블로그
[자료구조와알고리즘with파이썬] ch.5 본문
1. 알고리즘이란?
알고리즘은 문제를 해결하기 위한 일련의 단계적 절차를 의미한다. 컴퓨터 프로그래밍에서 좋은 알고리즘은 빠르고 효율적이어야 한다. 이때, 알고리즘의 성능을 측정하는 중요한 척도가 **시간 복잡도(Time Complexity)**이다.
2. 시간 복잡도와 빅오 표기법
- 시간 복잡도란?
시간 복잡도는 입력 크기 nn에 따라 알고리즘이 얼마나 오래 걸리는지를 수학적으로 분석한 것이다. 주로 최악의 경우 수행 시간을 측정하며, 이를 표현하는 방식이 Big-O 표기법이다.
- 빅오(Big-O) 표기법
Big-O 표기법은 입력의 크기 nn이 커질 때, 수행 시간의 증가 속도를 나타낸다. 아래는 자주 사용되는 시간 복잡도의 예시이다:
- O(1): 상수 시간 – 입력 크기에 상관없이 일정한 시간
(예: 배열에서 인덱스로 원소 접근) - O(log n): 로그 시간 – 입력이 커질수록 비교적 천천히 증가
(예: 이진 탐색) - O(n): 선형 시간 – 입력 크기에 비례해 시간 증가
(예: 배열에서 원소 탐색) - O(n log n): 로그 선형 시간 – 일반적인 효율적인 정렬 알고리즘
(예: 퀵 정렬, 병합 정렬) - O(n²): 이차 시간 – 이중 반복문 사용 시 주로 발생
(예: 버블 정렬)
3. 시간 복잡도의 중요성
효율적인 알고리즘을 설계하기 위해서는 시간 복잡도를 이해하고 최적화하는 것이 중요하다. 동일한 문제를 해결하는 여러 알고리즘이 있을 때, 시간 복잡도가 작은 알고리즘이 더 좋은 선택이 될 수 있다.

T = int(input())
for _ in range(T):
string = input().split()
for word in string:
print(word[::-1], end=' ')
| T = int(input()) |
| 테스트 케이스의 개수를 T로 입력받는다. |
| for _ in range(T): |
| 테스트 케이스 T만큼 반복하는 횟수 |
| string = input().split() |
| string = input()을 통해 사용자로부터 문자열을 입력받고 |
| .split()을 통해 문자열을 공백 기준으로 단어 단위로 나눈다. |
| 따라서 string은 각 단어들이 저장된 리스트가 된다. |
| for word in string: |
| string 문자열 리스트에 있는 각 단어를 하나씩 반복한다. |
| print(word[ : : -1], end = ' ' ) |
| word[ : : -1]를 통해 각 단어를 뒤집고 end=' '을 통해 공백으로 구분해서 출력한다. |
'문제풀이' 카테고리의 다른 글
| BOJ 1260, 1920, 11724, 2343 (0) | 2024.11.12 |
|---|---|
| [BOJ 2840] 행운의 바퀴 (3) | 2024.10.01 |