728x90
완전 탐색: 모든 경우의 수를 주저 없이 다 계산하는 해결 방법
시뮬레이션: 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행
파이썬에서 리스트 크기
파이썬에서의 고려 사항은 메모리의 제한이다. 대체로 테스트에서는 128~512MB로 메모리를 제한하는데 알고리즘 문제 중 수백만 개 이상의 데이터를 처리해야하는 문제가 출제되곤 한다.
데이터의 개수(리스트의 길이) | 메모리 사용량 |
1,000 | 약 4KB |
1,000,000 | 약 4MB |
10,000,000 | 약 40MB |
구현 문제에 접근하는 방법
일반적으로 알고리즘 문제에서의 2차원 공간은 행렬의 의미로 사용됩니다.
1. 상하 좌우
# N 입력받기
n = int(input())
x, y = 1, 1
plans = input().split()
# L, R, U, D에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D']
# 이동 계획을 하나씩 확인
for plan in plans:
# 이동 후 좌표 구하기
for i in range(len(move_types)):
if plan == move_types[i]:
nx = x + dx[i]
ny = y + dy[i]
# 공간을 벗어나는 경우 무시
if nx < 1 or ny < 1 or nx > n or ny > n:
continue
# 이동 수행
x, y = nx, ny
print(x, y)
2. 시각
# H를 입력받기
h = int(input())
count = 0
for i in range(h + 1):
for j in range(60):
for k in range(60):
# 매 시각 안에 '3'이 포함되어 있다면 카운트 증가
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)
3. 왕실의 나이트
# 현재 나이트의 위치 입력받기
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1
# 나이트가 이동할 수 있는 8가지 방향 정의
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]
# 8가지 방향에 대하여 각 위치로 이동이 가능한지 확인
result = 0
for step in steps:
# 이동하고자 하는 위치 확인
next_row = row + step[0]
next_column = column + step[1]
# 해당 위치로 이동이 가능하다면 카운트 증가
if next_row >= 1 and next_row <= 8 and next_column >= 1 and next_column <= 8:
result += 1
print(result)
4. 문자열 재정렬
728x90
'코딩테스트를 위한 자료구조 알고리즘' 카테고리의 다른 글
삽입 정렬 알고리즘 (0) | 2021.10.26 |
---|---|
선택 정렬 알고리즘 (0) | 2021.10.26 |
DFS & BFS (0) | 2021.10.25 |
그리디 알고리즘 (0) | 2021.10.25 |
파이썬 문법 (0) | 2021.10.25 |