알고리즘/코드워

[python]Take a Ten Minute Walk

(ㅇㅅㅎ) 2020. 10. 27. 22:43
728x90
반응형

www.codewars.com/kata/54da539698b8a2ad76000228/train/python

 

Codewars: Achieve mastery through challenge

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

이 문제를 간단하게 설명하면 동서남북으로 10걸음 갔을 때 제자리로 돌아왔는지 확인하는 것입니다. 입력은 string 리스트 형식입니다. 

e : 동쪽        w : 서쪽        n : 북쪽        s : 남쪽

 

이 문제를 풀기 위해서는 2가지 조건을 만족하면 됩니다.

1. 배열의 길이가 10인가?

2. x와 y의 좌표 값이 0인가?

 

처음에는 동쪽(x좌표)과 남쪽(y좌표)을 +로 잡고 서쪽(x좌표)과 북쪽(y좌표)을 -로 잡은 다음 수치를 계산했었습니다.

def is_valid_walk(walk):
    x = 0
    y = 0
    if len(walk) != 10:
        return False
    for i in walk:
        if i is 'e':
            x += 1
        elif i is 'w':
            x -= 1
        elif i is 's':
            y += 1
        elif i is 'n':
            y -= 1
 
    if x == 0 and y == 0:
        return True
    else:
        return False

 

하지만 이 말은 동쪽과 서쪽의 수가 같으면 x 좌표는 0이 되고, 남쪽과 북쪽의 수가 같으면 y좌표는 0이 됩니다.

간단하게 아래와 같이 쓸 수 있습니다.

def is_valid_walk(walk):
    return walk.count('e'== walk.count('w'and walk.count('n'== walk.count('s'and len(walk) == 10

반응형

'알고리즘 > 코드워' 카테고리의 다른 글

[python]Mumbling  (0) 2020.10.29
[python]Complementary DNA  (0) 2020.10.28
[python]List Filtering  (0) 2020.10.26
[python]Roman Numerals Encoder  (0) 2020.05.23
[python]Roman Numerals Decoder  (0) 2020.05.23