본문 바로가기
728x90
반응형

백준205

[백준] 2231번 : 분해합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 생성자를 구할 자연수를 입력받는다. N = int(sys.stdin.readline()) 생성자를 저장할 변수를 생성하고 생성자를 찾지 못했을 경우 값으로 초기화한다. answer = 0 입력받은 수까지 반복하며 생성자를 찾는다. for i in range(N) 각 자릿수를 저장하기 위해 값을 변수에 .. 2023. 7. 13.
[백준] 1181번 : 단어 정렬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 입력받은 단어들을 문자열 길이순으로 오름차순 정렬을 한 상태에서 동일한 길이는 또 사전순으로 정렬해야 하므로 각 단어와 문자열의 길이를 딕셔너리로 저장하여 정렬한다. sys.stdin.readline() 함수로 입력받기 위해 sys 모듈을 불러온다. import sys 전체 단어의 개수를 입력받는다. N = int(sys.stdin.readline()) 입력받은 단어와 그 길이를 저장할 딕셔너리를 생성한다. d = {} .. 2023. 7. 13.
[백준] 9095번 : 1, 2, 3 더하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 이전의 결과를 활용하여 해결하는 다이내믹 프로그래밍 문제이다. 여기서 이전 수의 1, 2, 3 조합의 경우에 모두 1을 추가하고 2와 3으로만 구성된 조합을 찾아 추가하면 다음 수의 1, 2, 3 조합의 경우가 도출된다. 해당 방법으로 1부터 입력받은 숫자까지 경우의 수를 구하고 입력받은 숫자의 각 경우의 순열 결과를 팩토리얼 함수로 구하면 해결할 수 있다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 전체 테스트 케이스 횟수를 입력받는다. T = int(sy.. 2023. 7. 12.
[백준] 2178번 : 미로 탐색 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 알고리즘 분류에 그래프 탐색과 너비 우선 탐색이 있길래 2차원 그래프를 만들고 너비 우선 탐색으로 해결해보려고 했으나 쉽지 않았다. 끊임없는 고민을 하던 중 시간이 초과되더라도 모든 경우의 수를 생각해 보기로 했다. 하여 각 자리마다 상, 하, 좌, 우로 이동할 수 있는 경우를 생각해 보았다. 모든 경우를 생각하던 중 다음 위치로 이동하기 위해서 최소 얼마의 이동이 있었는지 기억해 두면 마지막 칸까지 모든 경우의 수를 확인했을 때 최소한의 이동 거리를 구할 수 있.. 2023. 7. 11.
[백준] 1085번 : 직사각형에서 탈출 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 1. 문제 설명 2. 풀이과정 현재 위치 좌표와 직사각형의 오른쪽 위 꼭짓점 좌표를 입력받는다. x, y, w, h = map(int, sys.stdin.readline().split()) 현재 위치에서 직사각형 경계선까지의 가로와 세로 거리를 저장한다. length = x width = y 만약 현재 위치에서 직사각형 경계선까지 오른쪽 가로 거리가 더 짧으면 if (x > w - x) 직사각형 경계선까지의 가로 거리를 오른쪽 가로 거리로 수.. 2023. 7. 11.
[백준] 2441번 : 별 찍기 - 4 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2441번: 별 찍기 - 4 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 1. 문제 설명 2. 풀이과정 중첩 반복문을 연습해 보는 문제라고 할 수 있겠습니다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러옵니다. import sys 총 별을 찍을 줄 수를 입력받습니다. N = int(sys.stdin.readline()) 입력받은 수부터 1까지 각 줄마다 별의 개수를 찍어줘야 하므로 거꾸로 반복문을 실행합니다. for i in range(N, 0, -1) 별을 오른쪽 기준으로 정렬하여 찍어줘야 하므로 공백을 먼저 출력해 준다. 공백.. 2023. 7. 11.
[백준] 10250번 : ACM 호텔 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하여 입력받기 위해 sys 모듈을 불러온다. import sys 테스트 케이스의 개수를 입력받는다. T = int(sys.stdin.readline()) 각 테스트 케이스의 결과를 저장할 리스트를 생성한다. li = list() 테스트 케이스 횟수만큼 반복한다. for i in range(T) 각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님인지 입력받는다. H, W, .. 2023. 7. 9.
[백준] 1929번 : 소수 구하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하여 입력을 받기 위해 sys 모듈을 불러온다. import sys 소수를 구할 범위의 수를 입력받는다. M, N = map(int, sys.stdin.readline().split()) 함수를 구현하여 문제를 해결한다. def Func(num) 소수는 1과 자기 자신만 약수로 갖는 수를 말한다. 따라서 어떤 수를 제곱하였을 때 그 수가 소수를 판별할 수보다 크면 어떤 수보다 작은 수 중에서 나누었을 때 나누어 떨어.. 2023. 7. 9.
[백준] 11047번 : 동전 0 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readlin() 함수를 활용하여 입력받기 위해 sys 모듈을 불러온다. import sys 동전의 개수와 금액을 입력받는다. N, K = map(int, sys.stdin.readline().split()) 각 동전의 금액을 저장할 리스트를 생성한다. li = list() 동전의 개수만큼 반복하며 각 동전의 금액을 입력받고 입력받은 값을 리스트에 저장.. 2023. 7. 9.
[백준] 11399번 : ATM - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 1. 문제 설명 2. 풀이과정 시간의 합이 최소가 되려면 돈을 인출하는데 필요한 시간이 적은 사람부터 돈을 인출하면 된다. 따라서 각 사람이 돈을 인출하는데 필요한 시간이 저장된 리스트에서 최솟값을 구하여 이전 사람이 돈을 인출한 시간에 더하고 그 값을 전체 인출 시간에 더해준다. 시간을 더했으면 해당 사람을 삭제하고 나머지 값 중 최솟값을 찾아 계속적으로 해당 과정을 반복하면 된다. sys.stdin.readline() 함수로 입력받기 위해 sys 모듈을 불러온다. import sys 사람의.. 2023. 7. 9.
728x90
반응형