전체 글 19

[python] 백준 17281 야구

17281번: ⚾ (acmicpc.net) 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net from itertools import permutations N = int(input()) ablity = [list(map(int,input().split())) for _ in range(N)] permu = [1,2,3,4,5,6,7,8] result=0 for combi in permutations(permu,8): combi=list(combi) combi.insert(3,0) #항상 0번 1번은 4번째 ru1=Fa..

개발/알고리즘 2023.03.09

[python] 백준 20055 컨베이너 벨트 위의 로봇

20055번: 컨베이어 벨트 위의 로봇 (acmicpc.net) 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net from collections import deque N, K = map(int,input().split()) A = list(map(int,input().split())) robot = deque() #로봇이 있는 위치 in_robot = [0]*(2*N) queue = deque() for i in range(2*N-1,-1,-1): queue.append(i) result ..

개발/알고리즘 2023.03.02

[python] 백준 10026 적록 색약 DFS

10026번: 적록색약 (acmicpc.net) 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 문제 해석 BFS와 DFS 둘 다 가능해보이지만 DFS로 풀어보았다. 적록색약일 때는 list에 G를 R로 바꿔서 다시 DFS를 사용하였다. import sys sys.setrecursionlimit(10**6) #재귀 하려먼 이거 해주기 N = int(input()) color = [] for i in range(N): color.append(list(map(str,input()))) visited = [[..

개발/알고리즘 2023.02.25

[python] 백준 1667 단지번호붙이기

2667번: 단지번호붙이기 (acmicpc.net) 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net import queue dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] N = int(input()) arr = [] for i in range(N): temp = list(map(int,input())) arr.append(temp) que = queue.Queue() def bfs(): sub_cnt = 0 while (que.qsize()!=0): x,y = que.get() sub_cn..

개발/알고리즘 2023.02.25

[pytho] 백준 5014 스타트링크

5014번: 스타트링크 (acmicpc.net) 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net from queue import Queue F,S,G,U,D = map(int,input().split()) def bfs(): q = Queue() q.put(S) visited = [-1]*(F+1) visited[S]=0 while q.qsize()!=0: x = q.get() if x==G: #목표 층이면 return visited[x] for i in (x-D, x+U): if 0

개발/알고리즘 2023.02.25

[python] 백준 17086 아기상어2

17086번: 아기 상어 2 (acmicpc.net) 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net 문제 해석 아기 상어와 가장 거리가 먼 칸과의 거리 구하기 - 8방향으로 이동할 수 있다. 풀이 방법 BFS 사용 처음에는 각 칸마다 상어를 만나기 전까지 BFS를 돌려 안전 거리를 구하였는데 시간초과가 발생.. -> 상어가 있는 곳만 BFS로 돌림 상어가 있는 위치를 미리 queue에 담아놓고 8방향으로 방문하여 queue에 담아준다. 아직 방문하지 않은 칸에 상어와 떨어진 거리를..

개발/알고리즘 2023.02.25

[python] 프로그래머스 단어 변환 BFS

코딩테스트 연습 - 단어 변환 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 begin에서 시작한 단어기 target 단어로 변환할 때 바뀐 횟수를 구하기 - 변환할 수 있는 단어는 words 배열에 있어야하며 begin 글자에서 한 글자만 바뀌어야한다. 접근 방법 BFS를 사용하여 begin에서 변환할 수 있는 단어를 queue에 담아주었다. import queue que = queue.Queue() def solution(begin, target, words): count = 0 if..

개발/알고리즘 2023.02.25

[python] 백준 2304 창고 다각형

2304번: 창고 다각형 (acmicpc.net) 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 문제 해석 기둥을 모두 둘러싼 가장 작은 도형의 넓이 구하기 [조건] 지붕이 파인 모양이 있으면 안 됨 -> 중간에 작은 기둥을 만나도 건물의 높이는 내려가면 안 됨 접근 방법 가장 높은 기둥으르 기준으로 왼쪽과 오른쪽을 나눈다. -> 낮은 쪽으로 갈 일을 고려하지 않아도 되기 때문에 - 왼쪽은 왼쪽부터 가장 높은 기둥으로 접근 - 오른쪽은 오른쪽부터 가장 높은 기둥으로 접근 나보다 높은 애를 만..

개발/알고리즘 2023.02.16

[python] 백준 2493 탑

2493번: 탑 (acmicpc.net) 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제 해석 접근 방법 stack을 사용 stack은 후입선출의 구조이기 때문에 stack에서 하나씩 꺼낼 때마다 가장 가까운 탑이랑 비교할 수 있음 (왼쪽에서 진행하기 때문에 나의 왼쪽에 있는 탑만 stack에 들어감) stack에 탑의 index를 넣음 - stack의 마지막에 쌓인 탑의 길이가 나보다 높다면 출력, 내 탑을 넣음 - stack의 마지막에 쌓인 탑의 길이가 나보다 높지 않다면 stack에서 하나 빼고 ..

개발/알고리즘 2023.02.16