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