[백준] 1598번. 꼬리를 무는 숫자 나열 (Python)

윤라이트·2023년 11월 12일

백준 코딩테스트

목록 보기
17/25

하이루.

브론즈 3 문제이다.



[백준] 1598번. 꼬리를 무는 숫자 나열

위 문제는 조금만 생각하면 쉬운 문제이다.

일단 나는 위 문제의 규칙을 찾아 보았는데
먼저 4행으로 4의 배수가 적혀 있으니 리스트로 저장해야 하나 했다.

근데 굳이 그럴 필요가 없다고 느꼈고 입력 값 11, 33 그리고 출력 값 8에 대한 규칙을 찾았다.



문제 풀이

  • 11을 4로 나눈 값과 33을 4로 나눈 값의 차를 구한다.
    11 // 4 = 2, 33 // 4 = 8 |2-8| = 6
  • 11을 4로 나눈 값의 나머지를 구하고 33을 4로 나눈 값의 나머지와 차를 구한다.
    11 % 4 = 3, 33 % 4 = 1 |3-1| = 2
  • 그리고 위 값들을 더해준다.
  • 참고로 차이를 구하는 것이기에 abs함수를 사용해서 절대값을 구해줘야 한다.

이렇게 풀어서 아래와 같은 코드가 나왔는데
오답이 나왔다.

오답 나온 코드

num1, num2 = map(int, input().split())

one = abs((num1 // 4) - (num2 // 4))
two = abs((num1 % 4) - (num2 % 4))
print(one + two)

그래서 다른 값을 실행해 보았는데 이상한 값이 나왔다.
왜 그런가 다른 코드를 참고해보니,
입력 받은 값에 1을 빼주더라고?

그래서 아래와 같은 코드가 정답이다.

[정답 코드] 1598번. 꼬리를 무는 숫자 나열 (Python)

num1, num2 = map(int, input().split())

num1 -= 1
num2 -= 1
one = abs((num1 // 4) - (num2 // 4))
two = abs((num1 % 4) - (num2 % 4))

print(one + two)


왜 1을 빼주는 건지 아직 이해를 못했다. 그런데 내가 지금 시간이 없는 관계로 문제 이해만 하고 바로 다른 사람들의 코드를 참고해서 풀려고 했는데 뭔가 쉬운 거 같아서 조금만 더 생각해보자는 마음으로 하니까 정답에 근접해졌었다.

그리고 오답이 나와서 다른 사람들의 코드를 참고 했을 때,
나와 같은 방식으로 코드를 작성했던 사람들도 있었던 반면에
꽤나 복잡하고 긴 코드로 작성을 했던 사람들도 있었다.

지금까진 거의 계속 내가 다른 사람들의 코드보다 길거나 복잡했었는데 이번에는 내 코드가 간결하고 좋게 짠 거라 기분이가 좋았당..ㅎㅎ

조금만 생각하면 풀 수 있는 문제니까
아무리 바빠도 제발 1분이라도 더 고민해보도록 노력해보자!

아자 아자 화이팅 😘❣️

profile
끝까지 가보자9~!!!🔥✨💡

0개의 댓글