본문 바로가기

COS pro 강의자료

COS pro python 1차 9번문제

'''

구성은

1. 문제 설명
2. 원본 문제(코드)
3. 강사 답안
4. 주최측 답안

순으로 되어있습니다.

빈칸채우기와 한 줄 수정의 경우 
강사 답안과 주최 답안이 유사 / 동일할 수 있습니다.


#문제9
두 학생 A와 B는 계단 게임을 하였습니다.
계단 게임의 규칙은 아래와 같습니다.

~~~
1. 계단 제일 아래에서 게임을 시작합니다. (0번째 칸)
2. 가위바위보를 합니다.
3. 이기면 계단 세 칸을 올라가고, 지면 한 칸을 내려가고, 비기면 제자리에 있습니다.
4. 계단 제일 아래에서 지면 제자리에 있습니다.
5. 2~4 과정을 열 번 반복합니다.
~~~

A와 B가 계단 게임을 완료한 후에, A가 계단 위 몇 번째 칸에 있는지 파악하려고 합니다.

A와 B가 낸 가위바위보 기록이 순서대로 들어있는 리스트 recordA와 recordB가 매개변수로 주어질 때, 
게임을 마친 후의 A의 위치를 return 하도록 solution 함수를 작성했습니다. 
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

---

#####매개변수 설명
A와 B가 낸 가위바위보 기록이 순서대로 들어있는 리스트 recordA와 recordB가 매개변수로 주어집니다.
* recordA와 recordB의 원소는 0, 1, 2중 하나이고 순서대로 가위, 바위, 보를 의미합니다.
* recordA와 recordB의 길이는 10입니다.

---

#####return 값 설명
solution 함수는 계단 게임을 마친 후에 A가 계단 위 몇 번째 칸에 위치하는지를 return 합니다.
* 계단 제일 아래 칸은 0번째 칸입니다.

---

#####예시

| recordA              | recordB              | return |
|-----------------------|-----------------------|--------|
| [2,0,0,0,0,0,1,1,0,0] | [0,0,0,0,2,2,0,2,2,2] | 14     |

#####예시 설명

||||||||||||
|----------|------|------|------|------|------|------|------|------|------|------|
| recordA | 보   | 가위 | 가위 | 가위 | 가위 | 가위 | 바위 | 바위 | 가위 | 가위 |
| recordB | 가위 | 가위 | 가위 | 가위 | 보   | 보   | 가위 | 보   | 보   | 보   |
| result   | 0    | 0    | 0    | 0    | +3   | +6   | +9   | +8   | +11  | +14  |



def func(record):
    if record == 0:
        return 1
    elif record == 1:
        return 2
    return 0

def solution(recordA, recordB):
    cnt = 0
    for i in range(len(recordA)):
        if recordA[i] == recordB[i]:
            continue
        elif recordA[i] == func(recordB[i]):
            cnt = cnt + 3
        elif:
            cnt = cnt - 1
    return cnt

#The following is code to output testcase. The code below is correct and you shall correct solution function.
recordA = [2,0,0,0,0,0,1,1,0,0]
recordB = [0,0,0,0,2,2,0,2,2,2]
ret = solution(recordA, recordB)


#Press Run button to receive output.
print("Solution: return value of the function is", ret, ".")



'''

def func(record):
    if record == 0:
        return 1
    elif record == 1:
        return 2
    return 0

def solution(recordA, recordB):
    cnt = 0
    for i in range(len(recordA)):
        if recordA[i] == recordB[i]:
            continue
        elif recordA[i] == func(recordB[i]):
            cnt = cnt + 3
            '''
            func의 경우 0 -> 1, 1 -> 2, 2 -> 0 으로 되는데
            이는 record를 넣었을 때 해당 record를 이기는 경우를 리턴한다고 볼 수 있다.
            따라서 recordA[i] == func(recordB[i])가 True인 조건은 recordB를 recordA가 이기는 경우이다. 
            '''
        elif cnt > 0:
            # 졌을 때 항상 -1 하는 것이 아니라 
            # 계단 제일 아래에서 지면 제자리(0)에 있고
            # 졌을 때 지하실(마이너스)로 내려가지 않기 때문에
            # else -> elif 조건으로 0보다 큰 경우에만으로 한정지을 필요가 있다.
            cnt = cnt - 1
    return cnt

#The following is code to output testcase. The code below is correct and you shall correct solution function.
recordA = [2,0,0,0,0,0,1,1,0,0]
recordB = [0,0,0,0,2,2,0,2,2,2]
ret = solution(recordA, recordB)


#Press Run button to receive output.
print("Solution: return value of the function is", ret, ".")

'''
주최 제공답안
def func(record):
    if record == 0:
        return 1
    elif record == 1:
        return 2
    return 0

def solution(recordA, recordB):
    cnt = 0
    for i in range(len(recordA)):
        if recordA[i] == recordB[i]:
            continue
        elif recordA[i] == func(recordB[i]):
            cnt += 3
        else:
            cnt = max(0, cnt - 1)
    return cnt

'''

'COS pro 강의자료' 카테고리의 다른 글

COS pro python 1차 10번문제  (0) 2020.03.20
COS pro python 1차 8번문제  (0) 2020.03.20
COS pro python 1차 7번문제  (0) 2020.03.20
COS pro python 1차 6번문제  (0) 2020.03.20
COS pro python 1차 5번문제  (0) 2020.03.20