JLOG
[코드트리 조별과제] 1주차 문제 풀이 본문
오랜만에 다시... 코테 공부하려고 노트북을 켰다.
백준으로 할까 하다가, 실력 진단을 할 수 있고 실력에 맞는 커리큘럼을 제공하는 코드트리를 선택했다.
진짜 오랜만에 문제를 풀어서 그런가, 예전부터 꾸준히 공부해서 시험 문제를 잘 볼지 알았는데,
으악 생각보다 점수가 너무 낮아...
내가 풀었던 문제가 그렇게 어렵지도 않았다. 사소한게 잘못됐는데 그걸 못 찾아서 틀렸다...
으악~~ 다시 꾸준히 공부해야지
그래도 이번 주 3일이나 코테 공부했다.
쉬운 문제들이지만 오늘 푼거만 5문제~
쉬운거라도 조금씩 풀다보니 감을 좀 되찾은거 같고, 지금 풀고 있는 것들이 너무 쉽다.
그나마 좀 어려웠던게 레이저쏘기?
침착하게 했으면 금방 풀었을거 같은데, 지친 정신에 규칙을 잘 못 생각해내서 한두시간 걸린거 같다.
레이저 쏘기 풀이 코드
'\'을 입력으로 받으면 '\\'로 변환된다는 것을 첨 알았고, 길이를 똑같이 맞춰주어 사용하기 위해 '\\'를 '|'로 바꿔서 풀었다.
나머지는 /, \일 때 상하좌우가 어떻게 되는지 생각해서 천천히 구현하면 금방 풀린다.
# 낼 복습하기
# / 코드에서 쓸 떄 '//'로 써줘야함
N = int(input())
mirrors = []
for _ in range(N) :
mirrors.append(input().replace('\\','|'))
K = int(input())
# 방향 하좌상우
directions = [[1, 0], [0, -1], [-1, 0], [0, 1]]
def get_start(K) :
# 시작 위치
# n // 3으로 나눠서 d_idx 설정
d_idx = (K - 1) // N
# x 좌표 구하기, y 좌표는 여기서 +N-1 더하기
start_points = [0] * N
tmp = [x for x in range(1, N-1)]
start_points += tmp
start_points += [N - 1] * N
start_points += reversed(tmp)
K = K - (K // N) - 1
y = start_points[K]
x = start_points[(K + (N - 1)) % len(start_points)]
# 복잡하게 생각하지 말고, 케이스가 적은 경우는 if 문으로 나눠서 구현하는게 더 빠름
return y, x, d_idx
def check_inside_mmap(y, x) :
if (0 <= y < N and 0 <= x < N) :
return True
return False
# return 0 <= x and x < n and 0 <= y and y < n 이런식으로 바로 return 때려줘도 됨
y, x, d_idx = get_start(K)
# '\\'->'|' -1, '/' +1
# 범위 벗어날 때까지 count
cnt = 0
while (check_inside_mmap(y, x)):
d_idx = (d_idx + 2) % 4
mirror = mirrors[y][x]
if (d_idx in [0, 2] and mirror == '|') or (d_idx in [1, 3] and mirror == '/') :
d_idx = (d_idx + 1) % 4
else :
d_idx = (d_idx + 3) % 4
dy, dx = directions[d_idx]
y += dy
x += dx
cnt += 1
print(cnt)
그거 말고는 dx,dy 테크닉 다 풀고 완전 탐색 푸는데 너무 이지이지~
다시 진단해봐야겠다~ 우하하 저번보단 잘 나오겠지
Comments