[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๋ฌธ ๊ธธ์ด / ํŒŒ์ด์ฌ
Problem Solving ๐Ÿ”ฅ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๋ฌธ ๊ธธ์ด / ํŒŒ์ด์ฌ

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/49994

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฐฉ๋ฌธ ๊ธธ์ด

 

programmers.co.kr

ํ’€์ด

์„ ๋ถ„์„ set์— ๋„ฃ์œผ๋ฉด ๋˜๊ฒ ๋‹ค, ๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ ํ’€์—ˆ๋‹ค.
์„ ๋ถ„์˜ ์‹œ์ž‘์ ๊ณผ ๋์ ์„ set์— ๋„ฃ๋Š”๋ฐ, ์–‘๋ฐฉํ–ฅ์ด๋ฏ€๋กœ ๋‘ ๊ฐœ์˜ ๋ฐฉํ–ฅ์„ ๋‹ค ๋„ฃ์–ด์ค€๋‹ค.
๋‘๊ฐœ์˜ ๋ฐฉํ–ฅ์„ ๋‹ค ๋„ฃ์—ˆ์œผ๋‹ˆ ์ •๋‹ต์œผ๋กœ๋Š” ๋‚˜๋ˆ„๊ธฐ 2๋ฅผ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

def solution(dirs):
    answer = set()
    cur = (0, 0)
    for i in dirs:
        y, x = cur
        if i == 'U':
            y += 1
        elif i == 'D':
            y -= 1
        elif i == 'R':
            x += 1
        elif i == 'L':
            x -= 1
        if -5 <= y and y <= 5 and -5 <= x and x <= 5:
            nxt = (y, x)
            answer.add((nxt, cur)) 
            answer.add((cur, nxt))
            cur = nxt
    return len(answer) // 2