본문 바로가기
728x90
반응형

백준243

[백준] 2869번 : 달팽이는 올라가고 싶다 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 1. 문제 설명 2. 풀이과정 달팽이가 올라갈 수 있는 높이, 미끄러지는 높이, 나무 막대의 높이를 입력받는다. A, B, M = map(int, input().split()) 달팽이가 하루동안 올라가는 총 높이를 구한다. oneDay = A - B 정상에 올라가면 미끄러지지 않으므로 마지막날 정상에 올라가는 높이를 빼준다. V -= A math 모듈의 ceil() 메서드를 사용하여 마지막날을 제외하고 며칠을 올라가야 하는지 구하여 마지막날을 포함한 결과를 출력한다. print(math.ceil(V / oneDay) +.. 2023. 7. 7.
[백준] 1260번 : DFS와 BFS - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 1. 문제 설명 2. 풀이과정 리스트를 만들어 각 정점의 값을 [False]로 설정한 뒤, 탐색한 정점을 True로 바꾸면서 모든 정점의 값이 True가 될 때까지 탐색한다. DFS는 재귀 알고리즘을 사용하여 계속적으로 정점에 이어진 정점을 탐색하고 탐색할 정점이 없다면 다음 정점으로 넘어가 탐색을 계속한다. BFS는 deque을 사용하여 정점에서 연결된 모든 정점을 탐색하고 연결된 정점 중 가장 작은 정점으로 넘어가 탐색을.. 2023. 7. 6.
[백준] 2751번 : 수 정렬하기 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 프로그램 실행 시간이 최대한 적게 걸리도록 소스코드를 작성하는 것이 관건이다. 하여 정렬 알고리즘 중 가장 실행 시간이 적게 걸리는 병합정렬 알고리즘을 사용하여 문제를 해결하였다. 또한 자료구조 중 덱(deque)을 활용하여 병합정렬을 수행하였다. sys.stdin.readline() 함수를 사용하기 위해 sys 라이브러리를 불러온다. import sys deque이름으로 collections 라이브러리를 불.. 2023. 7. 4.
[백준] 1712번 : 손익분기점 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 1. 문제 설명 2. 풀이과정 고정 비용, 가변 비용, 노트북 가격을 입력받는다. A, B, C = map(int, input().split()) 만약 노트북 가격이 가변 비용보다 크다면 if (C - B > 0) 손익분기점을 계산하여 값을 출력한다. print(A // (C - B) + 1) 아니면 손익분기점이 존재하지 않으므로 -1을 출력한다. else: print(-1) 3. 소스코드 A, B, C = map(int, input().split()) if (C -.. 2023. 7. 3.
[백준] 2941번 : 크로아티아 알파벳 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 1. 문제 설명 2. 풀이과정 입력받은 문자열을 하나씩 확인하며 크로아티아 알파벳을 변경하는 방법은 비효율적이고 시간이 많이 걸리며 오류가 발생하기 쉽다. 변경된 크로아티아 알파벳 결과를 미리 리스트로 만들어 저장한다. croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] 변경된 크로아티아 알파벳으로 구성된 문자열을 입력받는다. word = input() 미리 만들어둔 변.. 2023. 7. 3.
[백준] 2798번 : 블랙잭 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 라이브러리를 불러온다. import sys 카드 개수와 만들어야 하는 합을 입력받는다. N, M = map(int, sys.stdin.readline().split()) 각 카드에 쓰여있는 수를 입력받아 각각 리스트로 저장한다. li = list(map(int, sys.stdin.readline().split())) 카드 3장을 뽑아 .. 2023. 7. 3.
[백준] 1463번 : 1로 만들기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 이 문제는 이전의 결과가 다음의 결과에 영향을 주는 문제이다. 이전의 결과를 다음의 결과에 반영하여 다음 결과를 도출하는 방식으로 구현해야 한다. 저는 입력받은 숫자까지 각 자연수의 값과 연산의 최소 횟수를 딕셔너리에 저장하고 마지막에 딕셔너리에서 입력받은 숫자의 값을 출력하도록 구현하였다. sys.stdin.readline() 함수를 사용하므로 sys 모듈을 불러온다. import sys 정수를 하나 입력받는다. N = int(sys.stdin.readline()) 딕셔너리를 하나 생성하고 1, 2, 3까지는 각각 값을 대입해 주어 초기화한다... 2023. 7. 3.
[백준] 5622번 : 다이얼 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 알파벳 대문자로만 이루어진 문자열을 입력받는다. S = input() 최소 시간을 구하기 위한 변수를 생성하고 초기화한다. time = 0 입력받은 문자열의 문자를 하나씩 추출한다. for i in S 각 문자를 아스키코드 값으로 바꿔 C인 67까지는 3을 더한다. if (ord(i) 2023. 7. 3.
[백준] 10828번 : 스택 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 라이브러리를 불러온다. import sys 전체 명령어 수를 입력받는다. N = int(sys.stdin.readline().rstrip()) 명령어 수행의 결과를 나타내줄 리스트를 생성한다. li = list() 전체 명령어 수만큼 반복한다. for _ in range(N) 명령어를 입력받는다. Str = sys.stdin.readline().rst.. 2023. 7. 2.
[백준] 1316번 : 그룹 단어 체커 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 1. 문제 설명 2. 풀이과정 전체 테스트 케이스의 개수를 입력받는다. N = int(input()) 그룹 단어의 개수를 세어줄 변수를 생성하고 초기화한다. count = 0 전체 테스트 케이스 횟수만큼 반복한다. for _ in range(N) 각 테스트 케이스 별로 그룹 단어를 판별할 문자열을 입력받는다. word = input() 입력받은 문자열을 단어로 분리해 저장할 리스트를 생성한다. li = list() 각 문자별 횟수.. 2023. 7. 2.
728x90
반응형