본문 바로가기
Coding Test/백준 단계별로 풀어보기

백준 단계별로 풀어보기 - 4673번, 1065번

by JUNG씨 2022. 9. 7.

📍4673번 셀프넘버

이건 문제를 이해 못하겠다......나중에 다시 도전

더보기
numbers = list(range(1,10001))
remove_list = [] #생성자 리스트
for num in numbers:
    for n in str(num):
        num += int(n)
    if num <= 10000:
        remove_list.append(num)
for remove_num in set(remove_list):
    numbers.remove(remove_num)
for self_num in numbers:
    print(self_num)

📍1065번 한수

N = int(input())
# 한수의 갯수를 출력하는 변수
hansu = 0

for i in range(1, N+1):
    # 1부터 99까지는 무조건 한수이다.
    if i < 100:
        hansu += 1
    else :
        # N은 1000보다 작은 수이기 때문에 3자리 숫자만 생각하면 된다.
        # 입력받은 N을 문자열로 변환해서 배열에 입력해준다.
        a = list(map(int, str(i)))
        if a[0] - a[1] == a[1] - a[2]:
            hansu += 1

print(hansu)

내가 작성한 for문을 활용한 코드 : hansu라는 한수의 갯수를 출력하는 변수를 선언해준다. 1부터 99까지는 무조건 한수이다. 문제에서 N은 1000보다 작은 수라고 정의했기 때문에 세자리 숫자까지만 고려하면 된다. 그래서 100부터 999 일 때는 숫자를 입력받아 문자열로 바꿔준 후 배열에 입력해준다.


def hansu(N):
    count = 0
    for i in range(1, N+1):
        num_list = list(map(int, str(i)))
        if i < 100:
            count += 1
        elif (num_list[0]-num_list[1]) == (num_list[1]-num_list[2]):
            count += 1
    return count

N = int(input())
print(hansu(N))

함수를 정의해서 만든 코드 : 구글링을 하면서 보니, 함수파트에 있는 문제이기 때문에 함수를 정의해서 만든 코드도 있어서 가져와봤다.

한수의 갯수를 출력해주는 hansu라는 함수를 정의해서 그 함수 안에 for문으로 조건을 걸어 정의해준다. 

그리고 함수 밖에서 N을 입력받아주고 hansu 함수를 호출해주면 한수갯수가  출력된다.