2026/04/12 15

[BOJ] #1699 제곱수의 합

제곱수의 합백준 #1699📌 문제예제 입력11예제 출력3📌 풀이Logic정수 입력 받기dp 리스트 생성Num보다 작은 최대 제곱수를 구하기제곱수를 빼고 남은 값에 대한 제곱수의 합 제곱수의 DP 값은 항상 1이라는 점을 이용# 변수명Num : 입력한 정수값dp : 제곱수들의 합의 최소 개수 리스트square : 입력값보다 작은 최대 제곱수를 찾기 위한 변수Pythonimport sysNum = int(sys.stdin.readline())dp = list(range(Num + 1))for i in range(2, Num + 1): for j in range(1, i + 1): square = j * j if square > i: break ..

BOJ/Silver 2026.04.12

[BOJ] #2502 떡 먹는 호랑이

떡 먹는 호랑이백준 #2502📌 문제예제 입력6 41예제 출력27📌 풀이Logic피보나치 수열 생성D, K 입력 받기주어진 값에 대한 Cake 값 생성 해당 값을 만족하는 A, B 값 탐색하는 반복문 및 출력# 변수명fib_num : 피보나치 수열 리스트D : 할머니가 넘어온 날K : D일째에 할머니가 호랑이에게 준 떡의 개수Flag : 반복문 흐름 제어 변수Cake : A, B 값에 따른 떡의 개수Count_A, Count_B : 할머니가 첫 날 / 둘째 날에 준 떡의 개수Pythonimport sysfib_num = [0] * 28fib_num[0], fib_num[1] = 1, 1for i in range(2, 28): fib_num[i] = fib_num[i - 1] + fib_num[i..

BOJ/Silver 2026.04.12

[BOJ] #1419 등차수열의 합

등차수열의 합백준 #1419📌 문제예제 입력1123예제 출력3📌 풀이Logic자연수 l, r, k 입력 받기k의 값에 따른 경우의 수 나누기 조건에 맞는 수열에서의 범위(start, end) 값 지정예외 처리 범위에 해당하는 개수 출력# 변수명l, r, k : 입력한 정수값start, end : 수열에서의 범위Pythonimport sysl, r, k = map(int, [sys.stdin.readline() for _ in range(3)])if (k == 2): start = max(0, l - 3) end = max(0, r - 2) print(end - start)elif (k == 3): start = max(0, (l - 1) // 3 - 1) end = max(..

BOJ/Gold 2026.04.12

[BOJ] #9095 1, 2, 3 더하기

1, 2, 3 더하기백준 #9095📌 문제예제 입력34710예제 출력744274📌 풀이Logic테스트 케이스 개수 입력각 테스트 값을 저장해두는 리스트 생성각 케이스에 대한 값 출력# 변수명N : 테스트 케이스 수dp : 각 케이스의 값 저장 리스트num : 출력할 케이스 값Pythonimport sysN = int(sys.stdin.readline())dp = [0] * 10dp[0], dp[1], dp[2] = 1, 2, 4for i in range(3, 10): dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]for j in range(N): num = int(sys.stdin.readline()) print(dp[num - 1])✏️ 새로운 내용-📚 ..

BOJ/Silver 2026.04.12

[BOJ] #3182 한동이는 공부가 하기 싫어!

한동이는 공부가 하기 싫어!백준 #3182📌 문제예제 입력3331예제 출력2📌 풀이Logic선배 수 입력각 선배의 대답 입력각 선배의 질문 과정 계산질문 과정에서 마지막 선배의 답을 추가질문 과정에서 동일한 선배의 대답을 이미 들었따면 질문 과정 종료 질문 횟수가 기존의 최댓값보다 크면 최신화# 변수명N : 선배의 수next_ask : 각 선배의 대답ans : 질문 과정len_count : 질문 과정의 최대 길이ask_to_who : len_count에 해당하는 선배의 번호Pythonimport sysN = int(sys.stdin.readline())next_ask = [0] * (N + 1)len_count = 0ask_to_who = 0for i in range(1, N + 1): next..

BOJ/Silver 2026.04.12

[BOJ] #6571 피보나치 수의 개수

피보나치 수의 개수백준 #6571📌 문제예제 입력10 1001234567890 98765432100 0예제 출력54📌 풀이Logic피보나치 수를 저장할 리스트 생성 및 초기값 저장정수 a, b 입력 받기리스트의 범위를 만족할 만큼 피보나치 수 연산입력한 두 정수 범위 사이의 피보나치 수의 개수 출력# 변수명dp_fib : 계산한 피보나치 수 저장 리스트fib : 피보나치 수 계산 함수a, b : 입력한 정수값Pythonimport sysdp_fib = []dp_fib.append(1)dp_fib.append(2)def fib(n): while (dp_fib[-1] = a and dp_fib[i] ✏️ 새로운 내용-📚 회고💡 피보나치 수를 모두 계산해 두지 않고 문제를 해결하였다대부분의 사람이..

BOJ/Silver 2026.04.12

[BOJ] #1463 1로 만들기

1로 만들기백준 #1463📌 문제예제 입력10예제 출력3📌 풀이LogicDP Algorithm (Dynamic Programming Algorithm, 동적 계획법)정수 N 입력 받기dp 리스트 생성주어진 점화식 구현(i) f(10) = f(9) + 1(ii) N이 3으로 나눠지는 경우 (ii) N이 2로 나눠지는 경우 # 변수명N : 입력한 정수값dp : DP Algorithm에 따른 값 저장 리스트Pythonimport sysN = int(sys.stdin.readline())dp = [0] * 1000001for i in range(2, N + 1): dp[i] = dp[i - 1] + 1 if (i % 3 == 0): dp[i] = min(dp[i], dp[i // 3]..

BOJ/Silver 2026.04.12

[BOJ] #1269 대칭 차집합

대칭 차집합백준 #1269📌 문제예제 입력3 51 2 42 3 4 5 6예제 출력4📌 풀이Logic집합 A, B의 원소의 개수 입력집합 A, B의 원소 입력교집합 구하기A + B - (교집합 * 2) 출력# 변수명A, B : 각 집합의 원소 개수set_A, set_B : 집합 A, Bcommon_set : 교집합Pythonimport sysA, B = map(int, sys.stdin.readline().split())set_A = list(map(int, sys.stdin.readline().split()))set_B = list(map(int, sys.stdin.readline().split()))common_set = list(set(set_A) & set(set_B))print(A + B - ..

BOJ/Silver 2026.04.12

[BOJ] #1312 소수

소수백준 #1312📌 문제예제 입력25 7 5예제 출력2📌 풀이LogicA, B, N 입력(A % B) * 10의 과정을 N번 반복 (A / B) 값 출력 # 변수명A, B, N : 입력한 값dec : 소숫점 아래 N번째 자리수(decimal, 소수)Pythonimport sysA, B, N = map(int, sys.stdin.readline().split())print(A / B)for i in range(N): A = (A % B) * 10 print(A, B, N)dec = A // Bprint(dec)✏️ 새로운 내용-📚 회고💡 나눗셈 과정처음에는 소숫점 아래의 숫자들을 리스트에 split하는 방식을 생각하였으나, N의 값이 얼마나 클지 모르기에 적합하지 않은 방법이었다.두 번..

BOJ/Silver 2026.04.12

[BOJ] #1254 펠린드롬 만들기

펠린드롬 만들기백준 #1254📌 문제예제 입력qwerty예제 출력11📌 풀이Logic알파벳 문자열 입력펠린드롬이 성립하는 구간 확인 펠린드롬에 포함되지 않은 구간의 길이만큼 더하기# 변수명S : 입력한 문자열Pythonimport sysS = sys.stdin.readline().strip()for idx in range(len(S)): if S[idx:] == S[idx:][::-1]: print(len(S) + idx) break✏️ 새로운 내용-📚 회고🚫 문제 잘 읽기문제에서 요구하는 펠린드롬의 조건을 제대로 이해하지 못했다...!제공된 문자열에서 길이를 추가하는 형식을 요구했으나, 주어진 알파벳들을 재조합하는 형태로 문제를 풀고 있엇다.'객체지향프로그래밍' 강..

BOJ/Silver 2026.04.12