def get_score(guesses, solution):
strike_count = 0
ball_count = 0
# 코드를 작성하세요.
i = 0
while i < len(guesses):
if guesses[i] in solution:
if guesses[i] == solution[i]:
strike_count += 1
elif guesses[i] != solution[i]:
ball_count += 1
i += 1
return strike_count, ball_count
# 테스트
s_1, b_1 = get_score([2, 7, 4], [2, 4, 7])
print(s_1, b_1)
s_2, b_2 = get_score([7, 2, 4], [2, 4, 7])
print(s_2, b_2)
s_3, b_3 = get_score([0, 4, 7], [2, 4, 7])
print(s_3, b_3)
s_4, b_4 = get_score([2, 4, 7], [2, 4, 7])
print(s_4, b_4)
내가 볼 때는 내 코드가 모범답안보다 길긴해도 초보자들을 위해서는 직관적이라고 생각한다. i
를 인덱스로 두고 0 ~ len(guesses)-1
범위로 하여 배열을 비교하는데 먼저 고른 숫자가 컴퓨터가 뽑은 숫자 3개랑 같은 수인지 체크한다. 그리고 같은 인덱스 자리에 숫자끼리 같으면 strike
, 다른 인덱스 자리끼리 숫자가 같으면 ball
이라고 칭하면 된다.
def get_score(guesses, solution):
strike_count = 0
ball_count = 0
for i in range(3):
if guesses[i] == solution[i]:
strike_count += 1
elif guesses[i] in solution:
ball_count += 1
return strike_count, ball_count
모범 답안 해석은 다음과 같다.
i
는 0~2 의 범위를 가지며, 같은 인덱스 숫자끼리 같으면 strike
로 조건을 둔다. 그리고 바로 elif로 넘어가는데, 이는 guesses[i] != solution[i]
의 의미가 포함되면서 guesses[i]
가 solution에 있는 숫자이다라는 뜻으로 해석할 수 있다. 그래서 ball
이다.