[코테 공부] 구현 Implementation_1

Yujin Lee·2021년 3월 21일
0

CodingTest_Study

목록 보기
4/7
post-thumbnail

머리속 알고리즘을 소스코드로 바꿔라!

  • 완전 탐색 👉🏻 모든 경우의 수를 다 계산하는 방법
  • 시뮬레이션 👉🏻 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행


구현 시 고려해야 할 메모리 제약 사항


파이썬에서 변수의 표현

  • 파이썬의 경우 프로그래머가 직접 자료형을 지정할 필요가 없고, 매우 큰 수의 연산도 기본으로 지원한다.
  • 정수형 변수 때문에 골치아플 일은 거의 없을 것이다.
  • 다만, 실수형 변수는 다른 언어와 마찬가지로 유효숫자에 따라서 연산 결과가 원하는 값이 나오지 않을 수 있다.

시간 제한

  • 파이썬은 알다시피 C/C++에 비해 느리다.
  • C/C++에 비해 더 많은 수행 시간 제한을 적용하기도 한다.
  • 알고리즘 문제를 풀 때 시간 제한과 데이터의 개수를 먼저 확인한 뒤에 이 문제를 어느 정도로 복잡한 알고리즘으로 작성해야 풀 수 있을 지 예측할 정도는 돼야 한다.


실전 문제

NXN 정사각형 공간의 가장 왼쪽 위 좌표는 (1,1)이며 가장 오른쪽 아래 좌표는 (N,N)에 해당한다.
, , , 방향으로 이동할 수 있으며 시작 좌표는 항상 (1,1)이다.
계획서에는 다음의 문자들이 반복적으로 적혀 있다.
계획서에 따르면 최종적으로 도착할 지점의 좌표를 출력하시오.

  • L : 왼쪽으로 한 칸 이동
  • R : 오른쪽으로 한 칸 이동
  • U : 위로 한 칸 이동
  • D : 아래로 한 칸 이동

    첫째줄의 N은 1이상 100이하
    둘째줄의 이동횟수는 1이상 100이하

입력 예시 :
5
R R R U D D
출력 예시 :
3 4


문제 풀이

# 상하좌우
n = int(input()) # N값 입력
x, y = 1, 1
plans = input().split()

# L, R, U, D에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
types = ['L', 'R', 'U', 'D']

for plan in plans:
    # 이동 후 좌표 구하기
    for i in range(len(types)):
        if plan == 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)
profile
I can be your Genie🧞‍♀️ How ‘bout Aladdin? 🧞‍♂️

0개의 댓글

관련 채용 정보