BACKJOON 7

[백준(Python)] while - else, for - else 문

핵심 원리: break를 만나면 else는 실행되지 않음1. while - else 문조건식이 False가 되어 반복문이 정상적으로 종료될 때 else 블록이 실행사용 예시: 설탕 배달 문제 (정확한 봉지 구성 찾기)n = int(input()) # 예: 7count = 0while n >= 0: if n % 5 == 0: print(count + n // 5) break # 2. for - else 문리스트나 범위(range)를 끝까지 다 훑었을 때 else 블록이 실행사용 예시: 소수(Prime Number) 판별num = 13for i in range(2, num): if num % i == 0: print(f"{num}은(는) 소수가 아닙니다.")..

BACKJOON 2026.03.17

[백준(Python)] 파이썬 자료형 - List, Deque, Heap, Dictionary, Set

1. 리스트 (List) - 가장 기본가장 많이 쓰이며, 스택(Stack) 기능을 포함.특징: 순서가 있고 수정 가능함. pop()을 쓰면 스택처럼 뒤에서부터 뺄 수 있음.시간 복잡도: 맨 뒤 삽입/삭제는 O(1), 중간 삽입/삭제는 O(N)import: 필요 없음.# 선언 및 초기화arr = [1, 2, 3]graph = [0] * 10 # 크기가 10인 0으로 채워진 리스트 (자주 쓰임)# 추가 및 삭제arr.append(4) # 맨 뒤 추가 [1, 2, 3, 4]arr.pop() # 맨 뒤 삭제 [1, 2, 3]# 슬라이싱 (부분 추출)print(arr[0:2]) # [1, 2]2. 덱 (Deque) - BFS 필수템큐(Queue)를 구현할 때 리스트(pop(0))를 쓰면 O(N..

BACKJOON 2026.03.12

[백준(Python)] BFS vs DFS

1. BFS (너비 우선 탐색) - 큐(Queue) 활용BFS는 시작 노드에서 가까운 노드부터 차례대로 탐색합니다. 파이썬에서는 collections.deque를 사용하는 것이 속도면에서 가장 효율적입니다.Python from collections import dequedef bfs(graph, start, visited): # 1. 시작 노드를 큐에 넣고 방문 처리 queue = deque([start]) visited[start] = True # 큐가 빌 때까지 반복 while queue: # 2. 큐에서 하나의 원소를 뽑아 출력 (가장 먼저 들어온 것) v = queue.popleft() print(v, end=' ') ..

BACKJOON 2026.03.12

[백준(Python)] Input()

1. input()의 본질성질: 무조건 **문자열(String)**로 읽음주의: 숫자 10을 넣어도 파이썬은 글자 "10"으로 인식합니다. 산술 연산을 하려면 반드시 형 변환이 필요2. split()의 역할기능: 공백(스페이스, 탭, 엔터)을 기준으로 문자열을 자룸.예시: "10 20" → ["10", "20"] (리스트 형태)3. map(int, ...)기능: 여러 개의 데이터를 한꺼번에 정수(int)로 변환.비유: 리스트 안의 모든 글자들에게 "숫자로 변신해!"라고 명령하는 컨베이어 벨트① 변수 여러 개에 나눠 담기 (언패킹)- 개수가 정확히 정해져 있을 때 백준에서 가장 많이 쓰는 방식a, b = map(int, input().split())# a에는 10, b에는 20이 들어감 ② 리스트로 묶기-..

BACKJOON 2026.03.10

[백준(Java)] 11727. 2×n 타일링 2 ( 재귀 + 메모이제이션)

문제2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×17 직사각형을 채운 한가지 예이다.입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 예제 입력 2 예제 출력 3 내 풀이 마지막 타일 배치 경우의 수 기여 세로 2×1 하나 배치 → n-1 크기 문제tileWay(n-1)가로 1×2 두 개 → n-2 크기 문제tileWay(n-2)2×2 타일 하나 → n-2 크기 문제또 tileWay(n-2)→ 총 2개의 방식이 n-2에 연결2 * tileWay(n-2) -> tileWay(n) = tileWay(n - 1) + 2 * tileW..

BACKJOON 2025.03.27

[백준(Java)] 13241. 최소공배수 (유클리드 호제법)

문제정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다.예:10은 5의 배수이다 (5*2 = 10)10은 10의 배수이다(10*1 = 10)6은 1의 배수이다(1*6 = 6)20은 1, 2, 4,5,10,20의 배수이다.다른 예:2와 5의 최소공배수는 10이고, 그 이유는 2와 5보다 작은 공배수가 없기 때문이다.10과 20의 최소공배수는 20이다.5와 3의 최소공배수는 15이다.당신은 두 수에 대하여 최소공배수를 구하는 프로그램을 작성 하는 것이 목표이다.입력한 줄에 두 정수 A와 B가 공백으로 분리되어 주어진다.50%의 입력 중 A와 B는 1000(103)보다 작다. 다른 50%의 입력은 1000보다 크고 100000000(108)보다 작다.추가: 큰 수 입력에 대..

BACKJOON 2025.03.27

[백준(Java)] 10828. 스택 (배열 VS ArrayList)

문제정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 다섯 가지이다.push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다...

BACKJOON 2025.03.27