Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- DES 알고리즘
- 대체 암호화
- 위치 암호화
- 키워드 암호화
- 한빛미디어
- ZOAC 2
- Greedy
- 문자 변환표
- 코딩 테스트
- 시저 암호화
- 소가 길을 건너간 이유3
- 구현
- 백준
- Pop
- 컬럼 암호화
- 컴퓨터 네트워크
- 2 + 1 세일
- 5와 6의 차이
- 욱제는 효도쟁이야!!
- 세탁소 사장 동혁
- 그리디 알고리즘
- 동적 계획 알고리즘
- 비연결형 통신
- 나동빈
- 파이썬
- 거스름돈
- 통나무 건너기
- JoCoding
- 전자 메일
- 사과 담기 게임
Archives
- Today
- Total
주니어로서의 백 걸음, 개발자로서의 한 걸음
구현 - 상하좌우 본문
문제 해설: 이 문제의 연산 횟수는 이동 횟수에 비례하게 된다. 예를 들어 이동 횟수가 N번인 경우 시간 복잡도는 O(N)이다. 따라서 이 문제의 시간 복잡도는 매우 넉넉한 편이다.
해당 문제는 이동 방향에 따라서 dx, dy의 값을 올바르게 매치시켜야 한다.
예를 들어 이동 방향이 R이라면 dx값은 그대로이고 dy값은 1이 더해진다. 따라서 이동 방향에 맞춰서 dx, dy의 배열을 정렬해 준다.
n = int(input())
plans = input().split()
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move = ['L', 'R', 'U', 'D']
x, y = 1, 1
for plan in plans:
for i in range(len(move)):
if plan == move[i]:
nx = x + dx[i]
ny = y + dy[i]
if nx < 1 or ny < 1 or nx > n or ny > n:
continue
x = nx
y = ny
print(x, y)
출처: 나동빈, 『이것이 취업을 위한 코딩 테스트다 with 파이썬』(한빛미디어), 110-112p