파이썬 μ•Œκ³ λ¦¬μ¦˜

[μ΄μ½”ν…Œ Ch4-1] μƒν•˜μ’Œμš° (κ΅¬ν˜„)

은진 2021. 12. 26. 21:28

πŸ‘©πŸ»β€πŸ’»λ¬Έμ œμ„€λͺ…

[μ΄μ½”ν…Œ Ch4-1] μƒν•˜μ’Œμš° (κ΅¬ν˜„)
μ΄μ½”ν…Œ

μ—¬ν–‰κ°€ AλŠ” N Γ— N 크기의 μ •μ‚¬κ°ν˜• 곡간 μœ„μ— μ„œ μžˆλ‹€. 이 곡간은 1 Γ— 1 크기의 μ •μ‚¬κ°ν˜•μœΌλ‘œ λ‚˜λˆ„μ–΄μ Έ μžˆλ‹€. κ°€μž₯ μ™Όμͺ½ μœ„ μ’Œν‘œλŠ” (1, 1)이며, κ°€μž₯ 였λ₯Έμͺ½ μ•„λž˜ μ’Œν‘œλŠ” (N, N)에 ν•΄λ‹Ήν•œλ‹€. μ—¬ν–‰κ°€ AλŠ” 상, ν•˜, 쒌, 우 λ°©ν–₯으둜 이동할 수 있으며, μ‹œμž‘ μ’Œν‘œλŠ” 항상 (1, 1)이닀. 우리 μ•žμ—λŠ” μ—¬ν–‰κ°€ Aκ°€ 이동할 κ³„νšμ΄ 적힌 κ³„νšμ„œκ°€ 놓여 μžˆλ‹€.


κ³„νšμ„œμ—λŠ” ν•˜λ‚˜μ˜ 쀄에 띄어쓰기λ₯Ό κΈ°μ€€μœΌλ‘œ L, R, U, D 쀑 ν•˜λ‚˜μ˜ λ¬Έμžκ°€ 반볡적으둜 μ ν˜€μžˆλ‹€. 각 문자의 μ˜λ―ΈλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  L: μ™Όμͺ½μœΌλ‘œ ν•œ μΉΈ 이동
  R: 였λ₯Έμͺ½μœΌλ‘œ ν•œ μΉΈ 이동
  U: μœ„λ‘œ ν•œ μΉΈ 이동
  D: μ•„λž˜λ‘œ ν•œ μΉΈ 이동


μ΄λ•Œ μ—¬ν–‰κ°€ Aκ°€ N Γ— N 크기의 μ •μ‚¬κ°ν˜• 곡간을 λ²—μ–΄λ‚˜λŠ” μ›€μ§μž„μ€ λ¬΄μ‹œλœλ‹€. 예λ₯Ό λ“€μ–΄ (1, 1)의 μœ„μΉ˜μ—μ„œ L ν˜Ήμ€ Uλ₯Ό λ§Œλ‚˜λ©΄ λ¬΄μ‹œλœλ‹€. λ‹€μŒμ€ N = 5인 지도와 κ³„νšμ„œμ΄λ‹€.

μ΄μ½”ν…Œ


이 경우 6개의 λͺ…령에 λ”°λΌμ„œ μ—¬ν–‰κ°€κ°€ μ›€μ§μ΄κ²Œ λ˜λŠ” μœ„μΉ˜λŠ” μˆœμ„œλŒ€λ‘œ (1, 2), (1, 3), (1, 4), (1, 4), (2, 4), (3, 4)μ΄λ―€λ‘œ, μ΅œμ’…μ μœΌλ‘œ μ—¬ν–‰κ°€ Aκ°€ λ„μ°©ν•˜κ²Œ λ˜λŠ” 곳의 μ’Œν‘œλŠ” (3, 4) 이닀. λ‹€μ‹œ 말해 3ν–‰ 4μ—΄μ˜ μœ„μΉ˜μ— ν•΄λ‹Ήν•˜λ―€λ‘œ (3, 4)라고 μ λŠ”λ‹€. κ³„νšμ„œκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ μ—¬ν–‰κ°€ Aκ°€ 졜쑱적으둜 도착할 μ§€μ μ˜ μ’Œν‘œλ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.


μž…λ ₯

  • 첫째 쀄에 κ³΅κ°„μ˜ 크기λ₯Ό λ‚˜νƒ€λ‚΄λŠ” N이 주어진닀. (1 <= N <= 100)
  • λ‘˜μ§Έ 쀄에 μ—¬ν–‰κ°€ Aκ°€ 이동할 κ³„νšμ„œ λ‚΄μš©μ΄ 주어진닀. (1 <= 이동 횟수 <= 100)

좜λ ₯

  • 첫째 쀄에 μ—¬ν–‰κ°€ Aκ°€ μ΅œμ’…μ μœΌλ‘œ 도착할 μ§€μ μ˜ μ’Œν‘œ (X, Y)λ₯Ό 곡백으둜 κ΅¬λΆ„ν•˜μ—¬ 좜λ ₯ν•œλ‹€.


μž…λ ₯ μ˜ˆμ‹œ
5
R R R U D D

좜λ ₯ μ˜ˆμ‹œ
3 4


✍️Idea Sketch

μ•Œκ³ λ¦¬μ¦˜ : κ΅¬ν˜„


μ‹œκ°„λ³΅μž‘λ„

μ—°μ‚° νšŸμˆ˜λŠ” 이동 νšŸμˆ˜μ— λΉ„λ‘€ν•œλ‹€. 이동 νšŸμˆ˜κ°€ n인 경우 O(n)이 λœλ‹€.


βœοΈλ‚΄ μ†ŒμŠ€μ½”λ“œ

  • κ³„νšμ„œλ₯Ό μž…λ ₯λ°›μ•„ 이동 횟수만큼 for문을 μ‹€ν–‰ν•œλ‹€.
  • dx, dyλŠ” L, R, U, D에 λ”°λ₯Έ 이동 λ°©ν–₯이닀. L, R, U, D에 λ”°λ₯Έ dx, dy의 인덱슀 iλ₯Ό κ΅¬ν•œλ‹€.
  • μƒˆλ‘œμš΄ x, y μ’Œν‘œλ₯Ό κ΅¬ν•œ ν›„ N * N의 곡간을 λ²—μ–΄λ‚˜λŠ”μ§€ ν™•μΈν•œλ‹€. λ²—μ–΄λ‚˜μ§€ μ•ŠλŠ” 경우 x, y μ’Œν‘œλ₯Ό κ°±μ‹ ν•œλ‹€.
  import sys
  si = sys.stdin.readline

  n = int(si())

  x, y = 0, 0
  dx = [0, 0, -1, 1]
  dy = [-1, 1, 0, 0]

  for move in si().split():
    if move == 'L':
      i = 0
    elif move == 'R':
      i = 1
    elif move == 'U':
      i = 2
    elif move == 'D':
      i = 3

    nx, ny = x + dx[i], y + dy[i]
    if (0 <= nx < n) and (0 <= ny < n):
      x, y = nx, ny

  print(x + 1, y + 1)