지나가던 개발자
[Python] 백준 2877번(4와 7) 문제 풀이 본문
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를 할 때 큰 도움이 될 듯 하다.
'PS > Python' 카테고리의 다른 글
[Python] 백준 1316번(그룹 단어 체커) 문제 풀이 (0) | 2022.10.10 |
---|---|
[Python] 백준 1759번(암호 만들기) 문제 풀이 (0) | 2022.10.09 |
[Python] 백준 11718번(그대로 출력하기) 문제 풀이 (1) | 2022.09.25 |
[Python] 백준 2822번(점수 계산) 문제 풀이 (1) | 2022.09.25 |
[Python] 백준 11944번(NN) 문제 풀이 (0) | 2022.09.22 |
Comments