2021.06.14 정리
구현Implementation이란 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정
완전 탐색 : 모든 경우의 수를 주저 없이 다 계산하는 해결방법
시뮬레이션 : 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행
int 자료형 데이터의 개수에 따른 메모리 사용량
데이터의 개수(리스트의 길이) | 메모리 사용량 |
---|---|
1,000 | 약 4KB |
1,000,000 | 약 4MB |
10,000,000 | 약 40MB |
크기가 1,000만 이상인 리스트가 있다면 메모리 용량 제한으로 문제를 풀 수 없게 되는 경우도 있음
8 * 8 체스판에서 나이트 좌표가 주어졌을 때 이동할 수 있는 경우의 수
# 좌표 입력받기
data = input()
first_x = ord(data[0])
first_y = int(data[1])
x = list(range(1,9))
y = list(range(ord("a"), ord("h") + 1))
dx = [-2, -2, 2, 2, -1, 1, -1, 1]
dy = [-1, 1, -1, 1, -2, -2, 2, 2]
move = ['LU', 'LD', 'RU', 'RD', 'UL', 'UR', 'DL', 'DR']
count = 0
for i in range(len(dx)):
nx = first_x + dx[i]
ny = first_y + dy[i]
if 8 < ny or ny < 1 or max(x) < ny or ny < min(x):
continue
else:
count += 1
print(count)
답안 예시
# 답안 예시
# 현재 나이트의 위치 입력받기
input_data = input()
row = int(input_data[1])
col = 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_col = col + step[1]
# 해당 위치로 이동이 가능하다면 카운트 증가
if next_row >= 1 and next_row <= 8 and next_col >= 1 and next_col <= 8:
result += 1
print(result)
제한시간 20분인데 대충 50분정도 걸렸다,,,
하루에 한 챕터 끝내보려했는데 한 문제 푸는데 시간이 오래 걸려서 힘들듯하다.