전체 글 109

(매일 BOJ) Python 1978번 소수 찾기

📦 문제 요약정수 N개가 주어지고,그중에서 **소수(prime number)**가 몇 개인지 세는 문제야소수: 1과 자기 자신만으로 나누어지는 수 (1은 소수가 아님!)💡 아이디어 (접근법만!)N개의 수를 하나씩 보면서,각 수가 소수인지 판별해야 함소수 판별할 땐 2부터 √n까지 나눠보는 방식 사용→ 더 빠르고 효율적!N = int(input())num = list(map(int,input().split()))count = 0for i in num:    for o in range(2,i+1):        if i % o == 0:            if i == o:                count += 1            breakprint(count)

매일 BOJ 2025.03.23

(매일 BOJ) Python 30802번 웰컴 키트

📦 문제 요약참가자 수 N명티셔츠는 6가지 사이즈별로 개수가 주어지고, 티셔츠는 T장씩 한 묶음으로만 주문 가능펜은 P자루씩 한 묶음으로 주문할 수 있고, 나머지는 낱개로 주문출력은:티셔츠를 모든 사람에게 맞춰서 줄 수 있도록 하려면 최소 몇 묶음이 필요한지펜은 묶음으로 최대 몇 개, 그리고 몇 개는 낱개로 사야 하는지💡 아이디어 (접근법만!)티셔츠: 각 사이즈마다 필요한 수를 T로 나눔(필요한 수 + T - 1) // T 공식 사용하면 부족하지 않게 묶음 계산 가능펜: 전체 인원 N을 P로 나누면몫 = 묶음 수나머지 = 낱개로 주문해야 하는 수🚨 팁입력이 많진 않지만, sys.stdin.readline() 쓰면 더 안전반복문 대신 나눗셈으로 계산하면 시간 초과 안 남출력 형식 주의:첫 줄: 티셔츠..

매일 BOJ 2025.03.23

(매일 BOJ) Python 4153번 직각삼각형

📐 문제 요약세 개의 양의 정수 a, b, c가 주어질 때,이게 직각삼각형의 세 변일 수 있는지 판단하는 문제야.입력은 여러 줄로 주어지고,0 0 0이 들어오면 입력이 끝남.각 줄에 대해 결과를 right 또는 wrong으로 출력하면 됨.💡 아이디어 (접근법만!)직각삼각형은 피타고라스 정리 a² + b² = c²를 만족해야 해.단, 어떤 변이 가장 긴 변인지 항상 보장되지 않으니까, 먼저 **세 변 중 가장 큰 걸 찾아서 그것을 빗변(c)**으로 보고 체크해야 해.즉, 입력받은 수들을 정렬한 다음, x² + y² == z² 인지 확인하면 됨.while True:    a,b,c = map(int, input().split())    if a == 0:        break    elif a > b ..

매일 BOJ 2025.03.23

(매일 BOJ) Python 1157번 단어 공부

📖 문제 요약단어 하나가 입력됨 (대소문자 섞여 있을 수 있음)**가장 많이 사용된 알파벳(대소문자 구분 X)**을 출력만약 여러 개라면 ? 출력💡 아이디어 (접근법만!)먼저 모든 문자를 대문자 or 소문자로 통일각 알파벳이 몇 번 나왔는지 세기딕셔너리, 리스트, collections.Counter 등 다양하게 가능가장 많이 나온 횟수를 찾고그 횟수가 중복이면 ?, 아니면 그 알파벳 출력 text = input().lower()text_list = list(set(text))count = []for i in text_list:    count1 = text.count(i)    count.append(count1)if count.count(max(count)) >= 2:    print("?")els..

매일 BOJ 2025.03.23

(매일 BOJ) Python 11650 좌표 정렬하기

📌 문제 요약2차원 좌표 (x, y)가 N개 주어짐 (N ≤ 100,000)이 좌표들을 x 오름차순,그리고 x가 같으면 y 오름차순으로 정렬해서 출력해야 함💡 아이디어 (접근법만!)파이썬의 sort() 또는 sorted() 함수는튜플 정렬에서 자동으로 첫 번째 기준 → 두 번째 기준 순서대로 정렬해줌.예: [(1, 2), (1, 1), (2, 1)] → 자동으로 (1, 1), (1, 2), (2, 1)로 정렬됨그래서 입력을 전부 (x, y) 튜플로 저장하고, 그냥 sort() 한 번만 해주면 끝!n = int(input())xy = []for i in range (n):    dot = list(map(int,input().split()))    xy.append(dot)xy.sort()for i i..

매일 BOJ 2025.03.23

(매일 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