본문 바로가기
  • (و ˃̵ᴗ˂̵)و Go for it
기타등등

[Phython] 엘리스 코딩_파이썬 기초2 실력 확인 문제 정답! ⑤ 당근 탐지기 (해설 있음)

by kanuu 2023. 4. 18.
반응형

5. 당근 탐지기

토끼는 당근을 탐지할 수 있는 당근 탐지기를 가지고 왼쪽 혹은 오른쪽으로만 갈 수 있는 길이가 5인 길 어딘가에 떨어졌습니다. 
 
5칸으로 구성된 길이 있고, O는 당근이 있는곳 X는 당근이 없는 곳이며 토끼가 왼쪽에서 세번째 칸에 떨어졌다고 가정합니다. 이때 왼쪽끝으로 이동하게 되면 총 1개의 당근을 획득할 수 있으며 오른쪽으로 이동한 경우 2개의 당근을 획득할 수 있습니다. 
 
O X X O O
--> '오른쪽' 출력
 
 

carrot_pos = list(input())
rabbit_pos = int(input())

carrot_pos.remove(' ')
carrot_pos.remove(' ')
carrot_pos.remove(' ')
carrot_pos.remove(' ')

left = 0
right = 0

while True:
    if rabbit_pos == 1:
        print("오른쪽")
        break
    if rabbit_pos == 5:
        print("왼쪽")
        break

    for i in range(0, rabbit_pos-1):
        if carrot_pos[i] == 'O':
            left = left +1
    for i in range(rabbit_pos, 5):
        if carrot_pos[i] == 'O':
            right = right +1

    if left > right:
        print("왼쪽")
        break
    elif right > left:
        print("오른쪽")
        break
    else:
        print("동일")
        break

정답은 위와 같습니다. 
 
-------------------------------------------------------------------------
-------------------------------------------------------------------------

<해설>

 
먼저 당근 위치를 리스트로 입력받고, 토끼 위치는 숫자형으로 입력받습니다. 

carrot_pos = list(input())
rabbit_pos = int(input())

 
 
 
당근 위치는 아래와 같이 입력을 하게되며 이는 공백을 4개 포함하고 있습니다. 그래서 바로 공백 4개를 지워줍니다.  
공백을 지울경우엔 반복문을 써도 되지만, 그냥 간단하게 remove 메서드를 사용하였습니다. 
Ex. 당근 위치 : O X O O X

carrot_pos.remove(' ')
carrot_pos.remove(' ')
carrot_pos.remove(' ')
carrot_pos.remove(' ')

 
왼쪽에 있는 당근수, 오른쪽에 있는 당근수 를 카운트 하기 위해 변수를 정의해줍니다. 

left = 0
right = 0

 
 
 
저는 Break를 활용하기 위해 While을 사용하였습니다. 

while True:

 
 
While안에 아래와 같이 정의합니다.
 
만약 토끼가 1번이나 5번에 있을 경우엔 아래와 같이 출력되도록 설정합니다. 그리고 출력 후엔 와일문을 빠져나오도록 break를 각각에 추가합니다. 
     1번에 있을 경우 오른쪽이 당근이 더 많음
     2번에 있을 경우 왼쪽에 당근이 더 많음

 
    if rabbit_pos == 1:
        print("오른쪽")
        break
    if rabbit_pos == 5:
        print("왼쪽")
        break

 
토끼가 2~4번에 있을 경우 왼쪽에 있는 당근수를 세고 변수 left에 넣습니다. 마찬가지로 오른쪽에 있는 당근수를 세고 변수 right에 넣습니다. 

    for i in range(0, rabbit_pos-1):
        if carrot_pos[i] == 'O':
            left = left +1
    for i in range(rabbit_pos, 5):
        if carrot_pos[i] == 'O':
            right = right +1

 
 
바로 위에서 당근 수를 카운트한 것을 왼쪽 오른쪽과 비교한 후 출력합니다. 이 케이스 또한 출력 후에 While문을 빠져나올 수 있도록 break를 써줍니다. 

    if left > right:
        print("왼쪽")
        break
    elif right > left:
        print("오른쪽")
        break
    else:
        print("동일")
        break

 
 
이상입니다.
 

728x90
반응형

댓글