smkyu1919   2년 전

에러는 RuntimeError(IndexError)가 발생합니다.

Pycharm으로 돌렸을 때 결과값은 정상적으로 출력이 됩니다.

상황이 이래서 문제가 발생하는 구간이 어딘지 예상하기가 힘듭니다.

IndexError라서 초과하는 Index(또는 없는 Index)를 건드리지는 않나 싶어 여러번 확인했지만

초과가 되는 경우를 찾기 힘드네요...


도움이 필요합니다.

jiminp   2년 전

값 입력이 잘못되었습니다.

" 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다."

smkyu1919   2년 전

감사합니다. 이제는 틀렸습니다로 표기됩니다.

질문을 하나 더 드리고 싶습니다.

아래와 같이 코드를 다시 구현했고 실행했을 때 2진수의 위치(역순)이 정상적으로 출력되는걸 확인했습니다.

값이 계속 틀렸다고 나오는데 여러 경우를 만들어서 테스트해봤지만 값 이상이 없었습니다.

잘못된 부분에 대해 조언좀 부탁드립니다.

#입력값
# 3
# 13
# 25
# 100

T = int(input()) # 테스트케이스 값
#n = list(map(int, input().split())) # n 입력값(가로로 공백 한칸 간격으로 입력)

n = []
for i in range(T):
    n.append(int(input())) # n 입력값

for i in range(T): # 테스트케이스만큼 반복

    pp = [] # n값의 이진수(역방향)가 들어갈 리스트
    result = [] # 반환된 이진수의 인덱스값을 일치하여 넣을 리스트

    while n[i] != 0: # 나머지 확인 방식으로 1,0 값을 출력 반복
        if n[i] % 2 == 1:
            pp.append(1)
            n[i] = (n[i] - 1) / 2
        elif n[i] % 2 != 1:
            pp.append(0)
            n[i] = n[i] / 2

    # print(pp)

    for i in range(len(pp)): # 1에 해당하는 인덱스 값을 리스트에 추가
        if pp[i] == 1:
            result.append(i)


    print(result) # 결과값 출력

jiminp   2년 전

값 출력이 잘못되었습니다. 단순히 값이 일치하면 되는 게 아니라 예제 출력 그대로 출력해야 합니다.

smkyu1919   2년 전

아 출력 형식이 잘못되었습니다 라는 에러도 별도로 있길래 값 출력 양식에 대해서는 전혀 생각지못했습니다.

한번 수행해보겠습니다.

djm03178   2년 전

출력 형식이 잘못되었습니다는 눈에 보이는 글자는 모두 맞는데 공백이나 줄바꿈 등만 틀렸을 때 받게 됩니다.

smkyu1919   2년 전

모든 조언 감사합니다. 

출력형식이

0 2 3

0 2 3

0 2 3

이렇게 세로형 줄바꿈 출력이 아니라

0 2 3 0 2 3 0 2 3 으로 출력해야 정답이 나오네요.

'첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고'라는 문구가

각 테스트 케이스의 출력마다 줄바꿈을 수행해야하는 것으로 이해했었습니다.하하; 


덕분에 여러 상황에 대한 대응이 가능해졌습니다. 감사합니다!

djm03178   2년 전

원래는 한 줄에 한 케이스 출력하고 줄바꿈하는 게 맞습니다. 그렇게 해서 틀린 건 어딘가 다른 곳에서 틀린 곳이 있어서일 것입니다.

공백으로 했을 때 맞는 것이 오히려 채점 프로그램이 관대해서 그것도 정답 처리를 해주는 것뿐입니다.

댓글을 작성하려면 로그인해야 합니다.