구현이란, 머리속에 있는 알고리즘을 소스코드로 바꾸는 과정이다.
풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제
코드가 길어지거나 문자열 실수연산을 처리해야하거나 적절한 라이브러리를 사용할시 빨리 풀 수 있는 문제이다.
n = int(input())
data = list(input().split())
dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]
dr = ['R', 'U', 'L', 'D']
x, y = 0, 0
for i in data:
for j in range(len(dr)):
if i == dr[j]:
if x + dx[j] >= 0 and x + dx[j] < 5 and y + dy[j] >= 0 and y + dy[j] < 5:
x += dx[j]
y += dy[j]
print(x + 1, y + 1)
n = int(input())
result = 0
for i in range(n + 1):
for j in range(60):
for k in range(60):
if '3' in str(i) + str(j) + str(k):
result += 1
print(result)
n = input()
row = int(n[1])
column = int(ord(n[0])) - int(ord('a')) + 1
data = [(2, -1), (2, 1), (-2, 1), (-2, -1), (1, 2), (-1, 2), (1, -2), (-1, -2)]
nx, ny = 0, 0
result = 0
for i in data:
nx = row + i[0]
ny = column + i[1]
if nx >= 1 and nx < 9 and ny >= 1 and ny < 9:
result += 1
print(result)
구현은 문제가 너무 길다....
읽기도 벅차...^
n, m = map(int, input().split())
a, b, d = map(int, input().split())
data = []
data1 = [[0] * m for i in range(n)]
for i in range(n):
data.append(list(map(int, input().split())))
print(data1)
data1[a][b] = 1
# 북 동 남 서
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
result = 0
def turn(d):
d -= 1
if d < 0:
d = 3
return d
count = 1
while True:
d = turn(d)
if data[a + dx[d]][b + dy[d]] == 0 and data1[a + dx[d]][b + dy[d]] == 0:
data1[a + dx[d]][b + dy[d]] = 1
a = a + dx[d]
b = b + dy[d]
result += 1
count = 1
else:
d = turn(d)
count += 1
if count == 3:
if data[a - dx[d]][b - dy[d]] == 1:
break
data1[a - dx[d]][b - dy[d]] = 1
a = a - dx[d]
b = b - dy[d]
result += 1
count = 1
print(result)
현재 위치에서 방향을 기준으로 왼쪽 방향으로 돈다.
돌아서 안가봤으면 전진, 가봤으면 또 왼쪽으로 돈다.
네 방향 모두 가봤으면, 뒤로 한칸 가고 1번을 반복한다. 뒤가 바다면 끝낸다.
회전 아이디어
바다 육지 / 방문 경험을 따로 나눠서 배열 관리를 해야함
-> 왜? 네 방향 모두 가봐서 뒤로 한칸 갈때, 뒤가 바다이면 종료이지 한번 가 본 육지이면 종료가 아니기 때문이다.
씁....돌아가긴 하는데 예시가 하나여서 맞는지 모르겄움;;
안녕하세요, 김덕우입니다! 구현은 문제가 너무 길어 읽기도 벅차다는 말에 100번 공감하고 갑니다....^__^ 혹시 게임 개발 문제는 아직 코드가 올라오지 않은 것일까요?!