python 61

[백준][Python] 10828 스택

📚 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 내 풀이 import sys N = int(sys.stdin.readline()) stack = [] for _ in range(N): command = list(sys.stdin.readline().split()) if command[0] == 'push': stack.append(command[1]) elif command[0] == 'pop': if len(stack) ..

코딩테스트 2024.03.27

[백준][Python] 14719 빗물

☔️ https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 내 풀이 H, W = map(int, input().split()) arr = [[0] * W for _ in range(H)] height = list(map(int, input().split())) ans = 0 for i in range(W): for j in range(H-height[i], H): arr[j][i] = 1 for i in range(H): block..

코딩테스트 2024.03.25

[백준][Python] 9935 문자열 폭발

💣 https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 정답 코드 string = input() explosion = input() ans = [] last_char = explosion[-1] for i in string: ans.append(i) if i == last_char and ''.join(ans[-len(explosion):]) == explosion: del ans[-len(explosion):] if len(ans)..

코딩테스트 2024.03.24

[백준][Python] 2002 추월

🚨 https://www.acmicpc.net/problem/2002 2002번: 추월 입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이 www.acmicpc.net 내 풀이 N = int(input()) enter = [] # 차가 터널에 들어가는 순서대로 exit = [] # 차가 터널에서 나오는 순서대로 ans = 0 for _ in range(N): enter.append(input()) for _ in range(N): exit.append(input()) for i in exit: if i != enter[0]: # 차가 들어간 ..

코딩테스트 2024.03.23

[백준][Python] 7562 나이트의 이동

♟️ https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 내 풀이 from collections import deque def bfs(x, y, ex, ey): q = deque() q.append((x, y)) while q: cx, cy = q.popleft() if cx == ex and cy == ey: return chess[cx][cy] for i in range(8): nx, ny = cx + dx[i], cy + dy[i] if 0

코딩테스트 2024.03.22

[백준][Python] 16987 계란으로 계란치기

🥚 https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 내 풀이 def dfs(n): ans = 0 if n == N: # 모든 계란을 검사한 경우 종료 cnt = 0 for i in range(N): if eggs[i][0] 0: # 같은 계란이 아니면서 깰 수 있는 계란인 경우 eggs[k][0] -= eggs[n][1] eggs[n][0] -= eggs[k][1] ans = max(ans, dfs(n+1)) eggs[k][0] ..

코딩테스트 2024.03.21

[백준][Python] 14502 연구소

🦠 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 내 풀이 from itertools import combinations from collections import deque import copy def bfs(): cnt = 0 q = deque() for j in virus: q.append((j[0], j[1])) while q: cx, cy = q.popleft() for k in range(4): nx, ny = cx + dx[k], cy + d..

코딩테스트 2024.03.20

[백준][Python] 2529 부등호

﹤﹥ https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 내 풀이 def dfs(n, lst): if n == k+1: # 부등호 관계를 만족하는 정수가 만들어진 경우 ans.append(lst) return for j in range(10): if not visited[j]: if n == 0: visited[j] = True dfs(n+1, lst + [j]) visited[j] = False else: if eval(str(lst[n-1]) + inequ..

코딩테스트 2024.03.20