문제
내 코드
n = input()
arr = [int(i) for i in n]
answer = [0] * 9
for j in arr:
if (j == 0):
answer[0] += 1
elif (j == 1):
answer[1] += 1
elif (j == 2):
answer[2] += 1
elif (j == 3):
answer[3] += 1
elif (j == 4):
answer[4] += 1
elif (j == 5):
answer[5] += 1
elif (j == 6 or j == 9):
answer[6] += 1
elif (j == 7):
answer[7] += 1
elif (j == 8):
answer[8] += 1
if (answer[6] % 2 == 0):
answer[6] = answer[6] // 2
else:
answer[6] = answer[6] // 2 + 1
print(max(answer))
로직
- 문자열을 리스트로 쪼갠다.
- 반복문을 돌려서, 숫자에 맞는 인덱스에 1씩 더해준다.
- 인덱스[6]을 2로 나눠준다. (홀수와 짝수에 따라 처리방법이 다르다)
- 리스트의 최대값을 출력한다. (최대값만큼 세트가 필요하기 때문)
효율적인 코드
n = input()
answer = [0] * 9
for i in range(len(n)):
if (n[i] == '6' or n[i] == '9'):
answer[6] += 1
else:
answer[int(n[i])] += 1
if (answer[6] % 2 == 0):
answer[6] = answer[6] // 2
else:
answer[6] = answer[6] // 2 + 1
print(max(answer))
피드백
- 굳이 문자열을 리스트로 나누지 않고, 문자열에서 바로 인덱싱을 사용할 수 있다.
(하지만 int 형으로 사용할 수 없기 때문에, int를 넣어주거나 숫자에 작은따옴표를 붙여줘야 한다)
- 일일이 숫자에 따라 elif를 해주지 말고, 특수한 경우(6, 9)만 따로 if문을 쓴다. 나머지는 인덱싱을 사용하여 단축한다.