젊은이의 블로그

[자료구조와알고리즘with파이썬] ch.5 본문

문제풀이

[자료구조와알고리즘with파이썬] ch.5

젊은사람 등장 2024. 10. 15. 16:55

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