전체 글 297

백준 1654 랜선 자르기

## 문제 풀이 ##N개의 랜선 만들어야 됨랜선의 길이는 모두 같음이미 가지고 있는 K개의 랜선으로 N개의 랜선 (같은 길이)을 만들어야 됨N개 이상으로 만들어도 상관 없음의문점 1. K가 1만인데 배열을 sort()로 정렬할 수 있나? 2. 802cm인데 200cm로 자르면 4개로 인정되나? -> 되는 것 같음입출력입력 1. N K : 1 2. k1 : 첫 번째 랜선의 길이 ... K+1. kk출력 1. 랜선의 최대 길이입력에 버퍼 사용구성 1. 입출력 처리 2. 배열 정렬 3. 매개변수 탐색 4. 결정 함수결정 함수 - 해야되는 것 : mid를 입력받았을 때 N개 이상의 랜선을 만들 수 있는가 - mid는 길이이므로, left와 right 역시 길이가 되어야 함. left = arr[1], rig..

백준 1086부분합

## 문제 풀이 ##수열 크기 NS 이상의 부분합 중 길이가 짧은 것입출력 1. N S : 수열 크기 N, 기준 수 S 2. n1 n2 n3 ... nN : 수열버퍼 사용 필요 없음토크나이저가 편리할 거 같긴 함제약조건 - 합을 못 만든다면 0 출력고정 변수 - N - S - 수열 arr변동 변수 - min - sum동작 - min 값 교체 - sum 값 갱신크기 - int 사용 가능모듈프로세스 : 입력받기 -> 제약 조건 확인 -> 구간 합 for 문 -> min 값 출력구간합 for 문 프로세스 : 같은 방향 투 포인터 사용단조 증가 while 문 -> min 값 교체 -> sum -= arr[start]단조 증가 while 문 : sum 증가 -> end 증가..~~~~.. ## 코드 ## impo..

백준 10826 피보나치 수 4

## 문제 풀이 ##n번째 피보나치 수 구하기dp 사용입출력입력 1. n출력 1. num : n번째 피보나치 수제약 조건고정 데이터변동 데이터동작모듈 - 피보나치 수열 점화식dp 풀이법 1. 재활용할 변수 구하기 2. 점화식 구하기 3. 캐싱 4. 초기값 구하기재활용할 변수 : - (n-1)번째 피보나치 수 - (n-2)번째 피보나치 수점화식 : f(n) = f(n-1) + f(n-2)캐싱 : - Bottom up - Top Down - 이번에는 상향식으로 구현초기값 : - f(0) : 0 - f(1) : 1전체 프로세스 : 입력받기 -> dp 배열 만들기 -> 점화식 사용 for문점화식 사용 for문 : dp[n-1] + dp[n-2]..~~~~..## 유의점 ##10000번째 피보나치 수의 크기가..

백준 2178번 미로 탐색

## 문풀 ## /*1 : 이동할 수 있는 칸0 : 이동할 수 없느 ㄴ칸(1, 1)에서 출발 -> (N, M)의 위치로 이동지나야 하는 최소의 칸 수 구하기Input 1. N M : N행 M열의 미로 2. 1010.. : M개의 숫자 … N+1. 1010 .. : M개의 숫자Output 1. min : 지나야 하는 최소의 칸 수제약조건 1. 인접한 칸만으로만 이동 가능고정 변수 1. 미로변동 변수 1. 지나야 하는 최소의 칸 수동작 1. 지나야 하는 최소의 칸 수 체크 2. 지나야 하는 최소의 칸 수 비교모듈 1. 미로 만들기 2. bfs전체 프로세스 : 입력 값 받기 -> 미로 배열 만들기 -> bfs 돌리기 -> min 값 출력미로 만들기 프로세스 : N M 입력받기 -> 배열 만들기 -> 배열 채우..

백준 12865번 평범한 배낭

## 문풀 ## 필요한 물건 N개 (100 이하)각 물건은무게 W가치 V최대 K만큼의 무게를 넣을 수 있는 배낭I/Oinput 1. N K 2. w1 v1 ... N+1. wn vnoutput 1. maxV자료구조 . 배열알고리즘 . dp제약 조건 . 물건 총 개수 상한선 . 물건 총 무게 상한선고정 데이터 . 물건 총 개수 N . 가방 총량 K . 각 물건 메타 데이터 (W, K)가변 데이터 . 챙긴 물건 개수 . 남은 가방 용량 . 즐기는 양동작 . 물건 총 개수 카운트 . 물건 총 무게 카운트 . 즐기는 양 카운트 maxV . 물건 고르기무게 기준으로 카운트 . 무게 n에서의 최대 가치를 카운트 ..~~~~.. ## 코드 ## import sysdef solve() : # 고정 데이터 입력 (..

백준 1300 K번째 수

## 문제 풀이 ## 배열 A 크기 : N x N배열 원소 : A[i][j] = i x j1차원 배열 BB를 오름차순했을 때의 B[k]I/OInput 1. N : 배열의 크기. 10^5 이하의 자연수 2. k : 10^9 or N^2 이하의 자연수Output 1. B[k]자료구조 : 배열정렬수가 너무 많아서 일반 정렬은 안됨알고리즘 : 이분 탐색?고정 변수 1. 배열 A동작 2. 배열 B 정렬변동 변수 3. 배열 B 2 x 2 배열1 22 43 x 3 배열1 2 32 4 83 6 94 x 4 배열1 2 3 42 4 6 83 6 9 124 8 12 16 배열에 값을 넣을 수가 있나? 수를 1 ~ N^2만큼 있다고 생각아니면 1 ~ k만큼? ..~~~~.. ## 코드 ## import sysinput =..

백준 13460 구슬 탈출 2

## 문제 풀이 ## # 문제# 보드# 보드 세로 크기 N# 보드 가로 크기 M# 구멍 하나 있음# 빨간 구슬을 구멍을 통해서 빼내기# 파란 구슬이 구멍에 들어가면 안 됨# 각각 하나씩 있음# 동작# 왼족/오른쪽/위쪽/아래쪽으로 기울이기# I/O# Input# 1. N M : 보드의 세로, 가로 크기. 둘 다 3 이상 10 이하# 2. c1c2...cm# ...# N+1. c1c2...cm# .은 빈 칸# #은 장애물 또는 벽# 0은 구멍 위치# R은 빨간 구슬의 위치# B는 파란 구슬의 위치# Output# 1. result : max or -1# I/O 둘 다 버퍼 필요 없음# 제약조건# 10번 이내에 빼야됨# 파란 공 들어가면 게임 오버# 이미 공이 있는 위치에는 들어갈 수 없음# 이미 벽이 있는 ..

백준 1987 알파벳

## 문제 풀이 ## # 문제# 보드# 세로 R칸# 가로 C칸# 각 칸에 대문자 알파벳 있음# 말# 상하좌우 인접한 네 칸 중 하나로 이동# 같은 알파벳이 적힌 칸으로는 이동 불가능# 좌측 상단 (1,1)에서 시작# 최대 몇 칸 이동 가능한지# I/O# Input# 1. R C : 보드 크기. 1 이상 20 이하# 2. c1c2c3...cc# ...# R+1. c1c2c3...cc# Output# 1. max : 말이 지날 수 있는 최대의 칸 수# 자료구조# 2차원 배열# 스택# 제약 조건# 보드 안# 이미 지나간 알파벳은 안됨# 고정 변수# 맵에 있는 알파벳# 변동 변수# 이미 지나간 알파벳 목록# max 말이 지날 수 있는 최대의 칸 수# 동작# 말의 위치 이동# 이미지 지나간 알파벳 목록 변경# m..