반응형
https://www.acmicpc.net/problem/2877
4와 7 문제
4와 7로 이루어진 수 중에서 K번째로 작은 숫자를 구해서 출력해 보자.
숫자의 규칙을 발견할 수 있다면 어렵지 않게 풀 수 있는 문제
⚙️내가 푼 정답코드
import sys
N = int(sys.stdin.readline())
result =''
while N > 0:
m = N % 2 # 짝수인지 홀수인지 판별
N = N // 2 # 2로 나눈 몫
if m == 0: # 짝수면
N -= 1 # N에 1을 빼고
result = '7'+ result # 7을 왼쪽에 더하기
else: #홀수면
result = '4'+ result # 4를 오른쪽에 더하기
print(result)
📌문제 접근 포인트
1. 4와 7을 이용해서 만들 수 있는 수 리스트를 찾아보자.
2. N = 1부터 하나씩 구해보자.
1 → 4, 2 → 7
3 → 44, 4 → 47, 5 → 74, 6→ 77
7 → 444, 8 → 447, 9 → 474, 10 → 477, 11 → 744, 12 → 747, 13 → 774, 14→777
...
3. 숫자 구성을 보면 홀수 일 때, 맨 뒤의 숫자가 4, 짝수 일 때 7인 것을 볼 수 있다. 이것을 이용해 보자.
4. 또 숫자를 자세히 보면, 7의 경우 홀수여서 맨 뒤가 4고 앞에 44는 3일 때 숫자인 것을 볼 수 있다. 8의 경우 짝수여서 맨 뒤가 7이고 44는 3일 때 숫자인 것을 볼 수 있는데, 여기서 3은 8//2를 계산 후 1만큼 차이를 나타낸다.
5. 9와, 10의 케이스도 4번과 동일함을 알 수 있으므로 이 조건을 갖고 코드를 구성하면 쉽게 해결할 수 있다.
반응형
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준 1515] 수 이어 쓰기(python) (0) | 2023.04.03 |
---|---|
[백준 11402] 이항 계수 4(python) (0) | 2023.04.03 |
[백준 22863] 원상 복구 (large) (python) (0) | 2023.03.31 |
[백준 12728] n제곱 계산 (python) (0) | 2023.03.30 |
[백준 14889] 스타트와 링크(python) (0) | 2023.03.30 |
댓글