백준 10

14495번/피보나치 비스무리한 수열/DP(동적계획법)

📕 문제https://www.acmicpc.net/problem/14495  📗답안 def fibo(n): fibo_list = [0,1,1,1] if n > 3: for idx in range(4,n+1): fibo_list.append(fibo_list[idx-1]+fibo_list[idx-3]) return fibo_list[n]if __name__=="__main__": n = int(input()) print(fibo(n))📄 알고리즘 공부 f(n) = f(n-1) + f(n-3) 이니깐 리스트로 표현해서 계산하면 됨수열 리스트 만들어서 (첫번째 인덱스는 0이니 두번째 인덱스부터)입력받은 수 n을 fibo함수에 넣어서..

백준 2025.04.01

2563번 색종이 파이썬

📕 문제https://www.acmicpc.net/problem/2563 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다.입력첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도..

백준 2024.10.18

1158번 /요세푸스 문제 / 파이썬/ 큐

Queueimport collections import dequequeue = deque()  큐 구현을 위해 deque 라이브러리 사용!- 파이썬에서 리스트로 구현 가능하지만 시간복잡도가 높아서 비효율적- 스택과 큐 라이브러리 장점 합침 queue.append() :  삽입 시 queue.popleft() : 삭제시queue.reverse() : 역순으로    https://www.acmicpc.net/problem/1158     # 1~n번까지 n명의 사람# 제거되는 순서가 요세푸스 순열from collections import dequequeue = deque()result = []n, k = map(int, input().split())# 1~n번 사람 큐 생성for i in range(1,n+..

백준 2024.10.02

3강 배열/ 백준 1475번 / 방 번호

https://www.youtube.com/watch?v=mBeyFsHqzHg&list=PLtqbFd2VIQv4O6D6l9HcD732hdrnYb6CY&index=4    배열의 성질1. O(1)에 k번째 원소를 확인/변경 가능2. 추가적으로 소모되는 메모리의 양(overhead)가 거의 없음3. cashe hit rate가 높음4. 메모리 상에 연속한 구간을 잡아야 해서 할당에 제약 걸림 기능과 구현1. 임의의 위치에 있는 원소를 확인/변경 = O(1)2. 원소를 끝에 추가 = O(1)3. 마지막 원소를 제거 = O(1)4. 임의의 위치에 원소를 추가/임의 위의 위치의 원소 제거 = O(n)  문제https://www.acmicpc.net/problem/1475  코드 # 방번호를 문자열로 취급n = i..

백준 2024.09.30

2720번 / 세탁소 사장 동력 / 파이썬

📕 문제https://www.acmicpc.net/problem/2720문제미국으로 유학간 동혁이는 세탁소를 운영하고 있다. 동혁이는 최근에 아르바이트로 고등학생 리암을 채용했다.동혁이는 리암에게 실망했다.리암은 거스름돈을 주는 것을 자꾸 실수한다.심지어 $0.5달러를 줘야하는 경우에 거스름돈으로 $5달러를 주는것이다!어쩔수 없이 뛰어난 코딩 실력을 발휘해 리암을 도와주는 프로그램을 작성하려고 하지만, 디아블로를 하느라 코딩할 시간이 없어서 이 문제를 읽고 있는 여러분이 대신 해주어야 한다.거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01)의 개수를 구하는 프로그..

백준 2024.08.28

110005번 / 파이썬 / 진법 변환 2

📕 문제https://www.acmicpc.net/problem/11005문제10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35입력첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.출력첫째 줄에 10진법 수 N을 B진법으로 출력한다. 📗실행결과예제 입력 1 60466175 36예제 출력 1 ZZZZZ 📄 내가 생각한 풀이n를 b로 나눈 몫으로만 생각했음나머지 생각을 못함💻 내 코드 # 11005번#n = 60466175 b = 3..

백준 2024.08.27

2745번 | 진법변환 | 파이썬

📕 문제 https://www.acmicpc.net/problem/2745 문제B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35입력첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.출력첫째 줄에 B진법 수 N을 10진법으로 출력한다.📗실행결과예제 입력 1 ZZZZZ 36예제 출력 1 60466175 36진법 수인 ZZZZZ를 10진법으로 변환하면 35*( 36^4 +36^3+36^2+36^1+36^0)= 6..

백준 2024.08.20

10789번 세로읽기 파이썬

📕 문제https://www.acmicpc.net/problem/10798  아직 글을 모르는 영석이가 벽에 걸린 칠판에 자석이 붙어있는 글자들을 붙이는 장난감을 가지고 놀고 있다. 이 장난감에 있는 글자들은 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’이다. 영석이는 칠판에 글자들을 수평으로 일렬로 붙여서 단어를 만든다. 다시 그 아래쪽에 글자들을 붙여서 또 다른 단어를 만든다. 이런 식으로 다섯 개의 단어를 만든다. 아래 그림 1은 영석이가 칠판에 붙여 만든 단어들의 예이다. A A B C D Da f z z 0 9 1 2 1a 8 E W g 6P 5 h 3 k x한 줄의 단어는 글자들을 빈칸 없이 연속으로 나열해서 최대 15개의 글자들로 이루어진다. 또한 ..

백준 2024.08.15

2675번 / 문자열 반복 / 파이썬

📕 문제 https://www.acmicpc.net/problem/2675  문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다...

백준 2024.08.10

백준 1000번 (A+B)

- input() : 사용자로부터 입력 받기, 입력한 값 문자열로 반환- int(input()) : 반환된 문자열 정수형을 바꾸기- a.split() : 여러개의 입력값 받았을 때 공백으로 구분하기- map() : A,B값 한꺼번에 int함수 적용하기  [map함수 사용 시]A,B = map(int, input().split())print = (A+B)[map함수 사용 안할 때]A,B = input().split()a = int(A)b = int(B)print(a+b)   - 조건  (0 class exp(Exception): def _str_(self): return "잘못된 식입니다." def plus(): a,b = map(int, input().split()) if not..

백준 2024.07.30