백준 478

[Python] 백준 풀기 16953 - A → B

파이썬 백준 16953번 실버2 https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 그래프 탐색, 너비 우선 탐색 문제 풀기 A 에서 B 로 가지 않고 B 에서 A 로 가능한지를 바라보았다. while 을 통해 B 가 짝수일 때는 2 로 나누고, 맨 뒷자리 1 이 있을 때 1 을 제거하여 답을 찾을 때까지 반복한다. 함수 fnConversion() 에 적용된 조건은 다음과 같다. 1. 제일 먼저 B 와 A 가 같은지 비교하여 결과를 내보내고 while 을 멈출 수 있도록 한다. 2. 변환이 불가능한 경우에 대한 조건으로 B 가 A 보다 ..

공부하기/백준 2022.12.06

[Python] 백준 풀기 1026 - 보물

파이썬 백준 1026번 실버4 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 정렬 문제 풀기 문제의 의도가 좀 애매한 것 같다. B를 정렬하지 말라고 했는데 정작 결과를 도출해야 하는 요소는 주어진 계산식으로 만들어질 수 있는 최솟값이다. 따라서, S = A[0] × B[0] + ... + A[N-1] × B[N-1] 에서 B 의 배열은 마음속에 고정해 두고, A 와 B 가 짝을 이룰 수 있는..

공부하기/백준 2022.12.05

[Python] 백준 풀기 2167 - 2차원 배열의 합

파이썬 백준 2167번 실버5 https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 문제 보기 분류: 구현, 누적 합 문제 풀기 난이도 실버5 표시되어 있어 생각한 방법으로 제출해도 될 것이라 생각했다. 하지만 시간 초과 결과를 얻었다. 동일한 코드를 PyPy3 로 제출하면 정답처리가 된다. 이 과정에서 다이나믹 프로그래밍으로 풀어야 함을 확인하였고, 다음 문제를 해결하는데 적용할 계획이다. PyPy3 로 제출한 코드는 ..

공부하기/백준 2022.12.04

[Python] 백준 풀기 10825 - 국영수

파이썬 백준 10825번 실버4 https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 sort() 함수와 lambda 를 이용하여 한 줄로 작성을 하려 했는데 생각처럼 되지 않았다. 아니 다시 해보니 생각대로 된다. 답안은 이미 제출했는데.. 맥주의 힘인가.. 괄호를 치는데 잘못됨이 있었다 더 공부하자 문제에서 제시한 조건 1. 2. 3. 4. 순서를 보면 순차적으로 다음 조건을 제시하는데 이는..

공부하기/백준 2022.12.02

[Python] 백준 풀기 1476 - 날짜 계산

파이썬 백준 1476번 실버5 https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 문제 보기 분류: 수학, 브루트포스 알고리즘, 정수론 문제 풀기 문제에서 제시한 설명대로 코드를 작성하였다. 매해 1년이 한 번씩 올라갈 때마다 지구, 태양, 달을 나타내는 수를 하나씩 증가시켜 입력에서 제시한 E, S, M 의 값이 나올 때까지 반복문을 작동시키고 해당 조건을 만족하면 결과 year 를 출력시키고 반복문을 빠져나온다. 코드 보기 import sys inp..

공부하기/백준 2022.12.01

[Python] 백준 풀기 4963 - 섬의 개수

파이썬 백준 4963번 실버2 https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 문제 보기 분류: 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색 문제 풀기 기존 상하좌우 이웃으로 연결된 문제에서 대각선 네 방향에 대해 추가적 처리를 생각한다. matrix 에서 처음으로 1을 발견하면 fnBFS() 를 실행하여 이웃된 8방향 모두 찾아가 1이 보이면 방문 처리한다. 이렇게 남은 matrix 에 대해 조건을 만족하여 fnBFS() 함수에 들어..

공부하기/백준 2022.11.30

[Python] 백준 풀기 7576 - 토마토

파이썬 백준 7576번 골드5 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 보기 분류: 그래프 탐색, 너비 우선 탐색 문제 풀기 BFS 를 사용하여 해결하는 문제이다. 익은 토마토의 위치 좌표를 2차원 deque() 로 먼저 저장을 한다. popleft() 를 통하여 첫 번째 익어있는 토마토의 위치들과 지속적으로 익어가는 토마토의 위치를 순차적으로 꺼내어 모든 매트릭스(그래프)를 탐색할 때까지 반복한다. 이웃하여 다음날..

공부하기/백준 2022.11.29

[Python] 백준 풀기 11725 - 트리의 부모 찾기

파이썬 백준 11725번 실버2 https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 보기 분류: 그래프 탐색, 트리, 너비 우선 탐색 문제 풀기 루트를 1로 정했기 때문에 1을 부모 노드로 시작하여 그 바로 아래 노드는 1의 자식 노드가 되면서 그 다음 아래 노드의 부모가 된다. 이 규칙을 적용하여 너비 우선 탐색을 이용하여 문제를 해결하였다. 예제 1을 그림으로 나타내면 위와 같다. 위에서 부터 부모 노드 방문을 표시하고 그 아래 자식 노드를 하나씩 deque 에서 꺼내어 부모 노드가 될 수 있는지 (그..

공부하기/백준 2022.11.28

[Python] 백준 풀기 2743 - 단어 길이 재기

파이썬 백준 2743번 브론즈 https://www.acmicpc.net/problem/2743 2743번: 단어 길이 재기 알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 입력 데이터를 문자로 저장하고 len() 함수를 이용하여 그 문자의 길이를 출력한다. 코드 보기 import sys inputdata = sys.stdin.readline word = str(inputdata().strip()) print(len(word))

공부하기/백준 2022.11.27

[Python] 백준 풀기 14935 - FA

파이썬 백준 14935번 브론즈4 https://www.acmicpc.net/problem/14935 14935번: FA 정수 x가 FA수 라면 FA를 출력하고, 아니라면 NFA를 출력한다. www.acmicpc.net 문제 보기 분류: 수학, 구현, 애드 혹 문제 풀기 주어진 F(x) 함수의 규칙에 따라 코드를 작성한다. int 로 입력받은 주어진 숫자는 리스트에 각 자리별로 나누어 저장하고 리스트 첫 번째 숫자 x_ls[0] 와 리스트 길이 (x 의 자릿수) len(x_ls) 를 곱하여 변수 fx 에 저장한다. fx = x_ls[0] * len(x_ls) 주어진 x 와 계산되어 나온 fx 가 다르면 재귀적으로 fnFXFunction(fx) 를 다시 실행하여 x == fx: 가 될 때까지 반복한다. 생..

공부하기/백준 2022.11.26