728x90

python 107

[백준] 2218 | 상자 안의 구슬 [파이썬/python]

문제link: https://www.acmicpc.net/problem/2218A*1 크기의 상자와 B*1 크기의 상자가 있다. 각각 A, B개의 구슬이 들어 있으며, 각 구슬에는 1부터 N까지의 정수가 적혀 있다.상자 안의 구슬을 이용해 할 수 있는 작업은 아래 세 가지이다. 1. A*1 크기 상자의 제일 아랫부분 구슬을 뺀다.(점수 없음)2. B*1 크기 상자의 제일 아랫부분 구슬을 뺀다.(점수 없음)3. A*1 크기 상자와 B*1 크기 상자의 제일 아랫부분 구슬을 동시에 빼고, 두 구슬에 적힌 수를 이용해 점수를 계산한 후 총점(0에서 시작)에 더한다. 두 개 상자 모두에 구슬이 남아있지 않을 때까지 작업을 반복했을 때 얻을 수 있는 가장 높은 점수를 출력하고, 그때 수행한 작업 번호(위 작업 설명..

알고리즘 2025.08.25

[백준] 6175 | Cow Travelling [파이썬/python]

문제link: https://www.acmicpc.net/problem/6175(R1, C1)에서 출발해 정확히 T초 후에 (R2, C2)에 도달하는 경우의 수를 계산하는 문제이다.한 번 움직일 때 상하좌우로 한 칸씩 움직일 수 있으며, 한 칸 움직이는 데 1초가 든다. 접근처음에는 bfs를 활용하려고 했는데, 문제 알고리즘 분류가 다이나믹 프로그래밍으로 되어 있어 dp로 접근해보았다.(백준 고마워요) 코드import sysinput = sys.stdin.readlinen, m, t = map(int, input().split())ground = [[1]*m for _ in range(n)]for i in range(n): tmp = list(input().rstrip()) for j in r..

알고리즘 2025.08.23

[백준] 2006 | Chemistry 101 [파이썬/python]

문제link: https://www.acmicpc.net/problem/2006화학 반응식을 입력받아 균형이 유지되는지 여부를 출력한다.균형이 맞지 않을 경우, 좌항과 우항을 비교하여 생성되거나 손실된 원소를 오름차순(원소 이름)으로 출력한다. 접근방정식을 입력받은 후 한 문자씩 입력받아 처리하도록 코드를 작성했었는데, 두 자리 이상의 숫자를 제대로 처리하지 못하는 문제가 발생해 코드를 고쳤다. 정규표현식을 이용해 문자열을 파싱하여 사용했다. 코드import sysimport reinput = sys.stdin.readlinedef push(x, n): if x in el: el[x] += n else: el[x] = n return ndef cal(i, f): ..

알고리즘 2025.08.07

[백준] 11916 | 볼질 [파이썬/python]

문제link: https://www.acmicpc.net/problem/11916 코드import sysinput = sys.stdin.readline#볼넷, 몸맞공으로 진루def mv(): s = 0 #진루 시 득점 #만루 시 3루 주자 홈으로 이동 if base[2] and base[1] and base[0]: base[2] = 0 s = 1 #1, 2루 주자 있으면 2루 주자 3루로 이동 if base[1] and base[0]: base[1] = 0 base[2] = 1 #1루 주자 존재 시 2루로 이동 if base[0]: base[0] = 0 base[1] = 1 #타자 주자 ..

알고리즘 2025.08.07

[백준] 29882 | Ranking [파이썬/python]

문제link: https://www.acmicpc.net/problem/29882 접근참가자의 이름과 과제 이름을 딕셔너리에 저장해 고유 번호로 매핑해준 후, 이차원 리스트를 이용해 해당 과제에 대해 참가자가 부여받은 점수 중 최고점만 저장하도록 했다. 이후 점수를 합해 내림차순 정렬하여 답을 출력했다. 코드import sysinput = sys.stdin.readlinename = dict()task = dict()arr = [[0]*10 for _ in range(10000)]for _ in range(int(input())): n, t, s = input().rstrip().split() if n not in name: name[n] = len(name) if t not..

알고리즘 2025.08.07

[백준] 7399 | Code Formatting [파이썬/python]

문제link: https://www.acmicpc.net/problem/7399문제에서 제시하는 조건에 맞추어 code formatter를 작성하고, 주어진 코드를 포맷팅한 결과를 출력한다. 접근포맷팅해야 할 코드가 입력값으로 주어진다. 입력되는 코드에는 0-9, a-z, A-Z, 소괄호(()), 중괄호({}), 쉼표(,), 세미콜론(;), 공백 문자( ), 탭 문자(\t), 개행 문자(\r, \n)가 사용될 수 있다.처음에는 출력 시 탭 문자를 사용하지 않는다는 조건을 보고 단순히 탭 문자 대신 공백 문자 네 개를 이용해야 한다는 점에만 집중해 들여쓰기 처리에만 유념하여 코드를 작성했고, 입력되는 탭 문자를 간과하는 코드를 제출했었다. 이후 탭 문자는 물론이고 '\r'도 처리할 수 있도록 .isspac..

알고리즘 2025.08.07

[백준] 30469 | 호반우가 학교에 지각한 이유 2 [파이썬/python]

문제link: https://www.acmicpc.net/problem/30469두 소수 A, B를 입력받아 A로 시작하고 B로 끝나는 길이 N의 소수소수를 만드는 문제이다.소수소수는 해당 수 자체가 소수일 필요는 없지만 모든 연속된 두 자릿수가 소수인 수를 말한다. 접근처음에는 dfs를 활용해 코드를 작성했는데 시간 초과가 발생해 다른 방법으로 접근하기로 했다.아래 사진은 dfs로 코드를 짰을 때 만들었던 2차원 리스트의 내용물이다. 10 이상 99 이하의 소수를 저장한 목록인데, 십의 자리 숫자 인덱스로 접근할 수 있는 리스트에 일의 자리 숫자를 저장하도록 했다. 살펴 보니 두 자릿수 소수의 일의 자리 숫자는 1, 3, 7, 9 중 하나였다. 짝수일 경우 2의 배수이고 5로 끝나는 경우에는 5의 배수..

알고리즘 2025.06.21

[백준] 11404 | 플로이드 [파이썬/python]

문제link: https://www.acmicpc.net/problem/11404n개의 도시와 m개의 버스가 있을 때, 모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 문제이다. 접근플로이드-워셜 알고리즘을 활용했다.시작 도시와 도착 도시가 동일한 노선이 여러 개 존재할 수 있으므로 처음에 버스 정보를 입력받을 때 최솟값을 저장하도록 처리해야 한다. 코드import sysinput = sys.stdin.readlinen = int(input())m = int(input())costs = [[float('inf')]*(n) for _ in range(n)]for _ in range(m): a, b, c = map(int, input().split()) ..

알고리즘 2025.06.13
728x90