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 |
Tags
- 구현
- 세탁소 사장 동혁
- 파이썬
- 키워드 암호화
- 동적 계획 알고리즘
- 욱제는 효도쟁이야!!
- Pop
- 컬럼 암호화
- 대체 암호화
- DES 알고리즘
- JoCoding
- 그리디 알고리즘
- 소가 길을 건너간 이유3
- 한빛미디어
- 통나무 건너기
- 위치 암호화
- 사과 담기 게임
- 5와 6의 차이
- 전자 메일
- 2 + 1 세일
- 백준
- 코딩 테스트
- 문자 변환표
- 시저 암호화
- 비연결형 통신
- ZOAC 2
- 컴퓨터 네트워크
- 거스름돈
- 나동빈
- Greedy
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