본문 바로가기
알고리즘 풀이/백준

[백준 2877] 4와 7 (python)

by char_lie 2023. 4. 3.
반응형

https://www.acmicpc.net/problem/2877

 

2877번: 4와 7

창영이는 4와 7로 이루어진 수를 좋아한다. 창영이가 좋아하는 수 중에 K번째 작은 수를 구해 출력하는 프로그램을 작성하시오.

www.acmicpc.net

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번과 동일함을 알 수 있으므로 이 조건을 갖고 코드를 구성하면 쉽게 해결할 수 있다. 
반응형

댓글