[6/22] 1475 (방 번호)

이경준·2021년 6월 22일
0

코테

목록 보기
44/140
post-custom-banner

문제

내 코드

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. 문자열을 리스트로 쪼갠다.
  2. 반복문을 돌려서, 숫자에 맞는 인덱스에 1씩 더해준다.
  3. 인덱스[6]을 2로 나눠준다. (홀수와 짝수에 따라 처리방법이 다르다)
  4. 리스트의 최대값을 출력한다. (최대값만큼 세트가 필요하기 때문)

효율적인 코드

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문을 쓴다. 나머지는 인덱싱을 사용하여 단축한다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글