본문 바로가기
코딩 테스트/백준

호텔 방 번호

by ornni 2024. 9. 23.
728x90
반응형

첫번째 코드

 

방 번호가 가능한 경우 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

 

통과!


링크

https://github.com/ornni/programmers/tree/main/%EB%B0%B1%EC%A4%80/Silver/5671.%E2%80%85%ED%98%B8%ED%85%94%E2%80%85%EB%B0%A9%E2%80%85%EB%B2%88%ED%98%B8

 

programmers/백준/Silver/5671. 호텔 방 번호 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 백준' 카테고리의 다른 글

사과 담기 게임  (0) 2024.09.20
3의 배수  (0) 2024.09.16
타일 채우기 4  (0) 2024.06.23
나이 계산하기  (0) 2024.06.16
블랙잭  (0) 2024.05.31