나동빈님의 책과 유튜브 강의인 '이것이 코딩 테스트다'를 바탕으로 스스로 공부한 내용을 정리한 글입니다.
참고한 영상의 링크는 아래와 같습니다.
n = int(input())
directions = list(input().split(" "))
x, y = 1, 1
dx = [0,0,-1,1]
dy = [1,-1,0,0]
move_types = ['R','L','U','D']
for direction in directions:
for i in range(len(move_types)):
if direction == 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)
시뮬레이션 문제의 전반적인 큰 그림을 배우기 가장 좋은 문제라고 생각이 든다.
내가 처음에 찬 코드이다.
n = int(input())
count = 0
only_second_3 = 15 * 60
only_minutes_3 = 45 * 15
for i in range(0, n + 1):
if i % 3 != 0 or i == 0:
count += (only_second_3 + only_minutes_3)
else:
count += 3600
print(count)
하지만 이는 완전탐색으로 문제를 푸는게 아니었다.
n = int(input())
count = 0
for h in range(0, 1 + n):
for j in range(0, 60):
for k in range(0, 60):
if '3' in str(h) + str(j) + str(k):
count += 1
print(count)
x = input()
row = int(x[1])
column = int(ord(x[0])) - int(ord('a')) + 1
count = 0
directions = [(-2, -1), (-2, 1), (2, -1), (2, 1), (-1, -2), (-1, 2), (1, -2),(1, 2)]
for dx, dy in directions:
nx = row + dx
ny = column + dy
if nx > 0 and nx <= 8 and ny > 0 and ny <= 8:
count += 1
print(count)
이 문제가 개인적으로 가장 헷갈리는 요인들이 많았는데 정리해보면 다음과 같다.