첫번째 코드
방 번호가 가능한 경우 1, 그렇지 못한 경우 0으로 구성하려 한다.
이때 각각 원소를 세어 해당 원소의 개수가 2개 이상인 경우 0으로 바꾼다 (즉, 사용할 수 없는 방번호이다)
n 이상, m이하의 숫자 중에서 1의 개수만 더한다.
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
room = [1] * 5001
for i in range(n, m+1):
check = str(i)
for j in check:
if check.count(j) > 1:
room[i] = 0
break
answer = sum(room[n:m+1])
print(answer)
25% 오류
두번째 코드
코드 상에서 한줄씩 작동했을 때 오류를 찾지는 못했다.
하지만 연속으로 사용하는 경우 문제가 발생할 수 있겠구나 (입력의 형태를 보면)라고 예상된다
그렇기 때문에 GPT와 대화를 해본 결과 try except 문을 사용하기로 했다.
또한 굳이 count를 사용하여 계산하는 것 보다는 set을 이용하여 반복되는 경우가 있는지 확인하는 방법이
계산량을 줄이는 방법으로 설명해주었다. (set으로 길이를 확인!)
def has_repeating_digits(number):
num_str = str(number)
return len(num_str) != len(set(num_str))
while True:
try:
n, m = map(int, input().split())
count = 0
for i in range(n, m+1):
if not has_repeating_digits(i):
count += 1
print(count)
except EOFError:
break
통과!
링크