지나가던 개발자

[Python] 백준 2877번(4와 7) 문제 풀이 본문

PS/Python

[Python] 백준 2877번(4와 7) 문제 풀이

KwonYongHyeon 2022. 10. 7. 20:06

 

print(str(bin(int(input())+1)[3:]).replace("0", "4").replace("1", "7"))

 

골드V문제를 한줄코딩하다니... 라기보단 내가 푼 것이 아니다. 나는 구현만 했고, 푼 건 다른 사람이다.

 

문제를 보고 뭔말인지 모르겠어서 블로그를 찾아봤는데, 이런 글이 눈에 띄었다.

 

분명 패턴이 있는데 이 패턴을 어떻게 정리하고 구현할지 고민하다가 K+1의 이진수에서 가장 큰 자리수를 없애면 매칭이 된다는 것을 알게 되었다. 즉, K가 5일때 4와 7로 만들 수 있는 5번째 작은 수는 74인데 위의 그림에서 74를 7을 1로 표현하고 4를 0으로 표현한 이진수로 보았을 때 10으로 되어있다. 이때 5+1(=6)의 이진수는 110이고 여기서 가장 큰 자리수인 1을 없애면 10이 남는다. 이 10이란 숫자를 다시 1은 7로, 0은 4로 변환해서 출력해주면 74가 된다.
https://syh39.github.io/algorithm/algorithm_BOJ_2877/

 

이런 생각을 하시다니... 나는 진짜 상상도 못했다. 이진수라니.

 

규칙을 찾는 연습을 자주 해 놓으면 PS를 할 때 큰 도움이 될 듯 하다.

Comments