2025/03/21 4

(매일 BOJ) Python 4673번 셀프 넘버

📜 문제 요약어떤 수 n에 대해 d(n) = n + 각 자리 숫자의 합으로 정의할 때,어떤 수가 d(n)의 결과로 나올 수 있다면, 그 수는 생성자가 있는 수라고 해.예:d(75) = 75 + 7 + 5 = 87 → 87은 생성자가 751~10000 중에서 생성자가 없는 숫자 (셀프 넘버) 만 출력하면 됨💡 아이디어1부터 10000까지 순회하면서,d(n) 값을 전부 구해서 생성된 수들을 기록그리고 1부터 10000까지 중에서 한 번도 생성되지 않은 수만 출력핵심:d(n) 자리수 분해해서 합10000 이하에서 생성된 수를 체크생성 안 된 숫자만 출력 def d(n):    num = list(str(n))    asw = n    for i in range(len(num)):        asw += ..

매일 BOJ 2025.03.21

(매일 BOJ) Python 2751번 수 정렬하기 2

📦 문제 요약N개의 수가 주어짐 (1 ≤ N ≤ 1,000,000)수들을 오름차순으로 정렬해서 출력해야 함💡 아이디어단순 정렬 문제지만 입력 개수가 최대 100만 개라서 시간 초과 조심!파이썬 기본 sort()는 Timsort 기반이라 빠르기 때문에 그대로 사용해도 괜찮음.입력 속도가 중요하므로 input() 대신 sys.stdin.readline() 쓰는 게 좋음.🚨 팁입력이 많을 때는 느린 input()보다 sys.stdin.readline() 추천import sysa = int(input())b = []for i in range(a):    b.append(int(sys.stdin.readline()))b.sort()for o in b:    print(o)

매일 BOJ 2025.03.21

(매일 BOJ) Python 1789번 수들의 합

🔢 문제 요약자연수들을 서로 다른 수로 계속 더해서 어떤 수 S를 만들려고 해.만들 수 있는 가장 많은 자연수의 개수를 구하는 문제야.💡 아이디어예를 들어서 S = 20이면,1 + 2 + 3 + 4 + 5 = 15 → 아직 괜찮음1 + 2 + 3 + 4 + 5 + 6 = 21 → 초과함→ 이 경우 답은 5즉, 1부터 계속 더하면서 합이 S를 넘지 않게 하고,그때까지 더한 숫자의 개수를 세면 되는 문제야.구현 시 주의할 건:합이 S를 넘는 순간 바로 중단자연수는 1부터 시작!a = int(input())total = 0count = 0while True:    count += 1    total += count    if total > a:        breakprint(count-1)

매일 BOJ 2025.03.21

(매일 BOJ) Python 1316번 그룹 단어 체커

📝 문제 설명 요약:어떤 단어에서 같은 알파벳이 떨어져서 나오면 안 됨.예: aabbbcc → O예: aba → X (a가 끊겼다가 다시 나옴)이런 단어를 "그룹 단어"라고 부름N개의 단어 중 그룹 단어의 개수를 세는 문제 💡 풀이 아이디어문자열을 한 글자씩 확인하면서,이전에 본 알파벳이 다시 나타났는데, 바로 전 글자와 다르면 → 그룹 단어 X N = int(input())result = []set_result = []num = 0for i in range(N):    text = list(input())    if len(text) == 1:        result.append(text[0])    for o in range (len(text)-1):                if o == 0..

매일 BOJ 2025.03.21