백준

·Algorithm/baekjoon
문제https://www.acmicpc.net/problem/9205 풀이코드# 맥주 한 박스에는 맥주가 20개 들어있다. 목이 마르면 안되기 때문에 50미터에 한 병씩 마시려고 한다. 즉, 50미터를 가려면 그 직전에 맥주 한 병을 마셔야 한다.# 편의점에 들렸을 때, 빈 병은 버리고 새 맥주 병을 살 수 있다. 하지만, 박스에 들어있는 맥주는 20병을 넘을 수 없다. 편의점을 나선 직후에도 50미터를 가기 전에 맥주 한 병을 마셔야 한다.from collections import dequedef bfs(): que = deque() que.append((home_idx_x,home_idx_y)) while que: x,y = que.popleft() if ab..
·Algorithm/baekjoon
문제https://www.acmicpc.net/problem/5567 풀이코드 from collections import dequedef bfs(start_num,depth): global answer que = deque() que.append((start_num,depth)) while que: start_num,depth = que.popleft() visited_list[start_num] = True for i in linked_list[start_num]: if visited_list[i] != True and depth 문제접근친구관계를 저장하기 위해 linked_list 를 사용하여 친구관계를 저장한다. 이때 a..
·Algorithm/baekjoon
문제https://www.acmicpc.net/problem/17070 풀이 코드1(실패) (BFS탐색) from collections import dequen = int(input())mapp = [list(map(int, input().split())) for _ in range(n)]dx = [1, 1, 0] # 가로, 대각선, 세로 이동dy = [0, 1, 1]now = [0, 1, 2] # 0: 가로, 1: 대각선, 2: 세로dp = [[[0] * 3 for _ in range(n)] for _ in range(n)] # dp[y][x][방향] = 경로 개수 저장dp[0][1][0] = 1 # 처음 파이프 위치: (0,1)에서 가로로 시작que = deque([[0, 1, 0]]) # ..
·Algorithm/baekjoon
문제https://www.acmicpc.net/problem/4179풀이 코드from collections import dequeimport sys# J와 F동시에 BFS시작# 탐색한 좌표를 담을 수 있는 변수 x 필요 # 해당 변수에 J와 F를 구분할 수 있는 변수 필요# 좌표를 담은 변수x를 pop하며 탐색 진행# 탐색을 한 후, 다시 x에 저장, 이때 카운티 1증가# J가 F랑 곂치면 임파서블 출력# J가 벽 외각에 도달하면 cnt 출력r,c = map(int,input().split())dx = [-1,1,0,0]dy = [0,0,-1,1]answer = "IMPOSSIBLE"def bfs(): global answer while que: # print(mapp) ..
·Algorithm/baekjoon
https://www.acmicpc.net/problem/12919 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 처음 문제를 봤을때 S에서 T로 만드는 것은 힘들 것이라 생각하여 T를 S로 만들자 생각했다. 틀린코드 original_text = list(input()) target_text = list(input()) gap = len(target_text) - len(original_text) for i in range(gap): if target_text[0] =..
·Algorithm/baekjoon
참외밭 문제 시골에 있는 태양이의 삼촌 댁에는 커다란 참외밭이 있다. 문득 태양이는 이 밭에서 자라는 참외가 도대체 몇 개나 되는지 궁금해졌다. 어떻게 알아낼 수 있는지 골똘히 생각하다가 드디어 좋은 아이디어가 떠올랐다. 유레카! 1m2의 넓이에 자라는 참외 개수를 헤아린 다음, 참외밭의 넓이를 구하면 비례식을 이용하여 참외의 총개수를 구할 수 있다. 1m2의 넓이에 자라는 참외의 개수는 헤아렸고, 이제 참외밭의 넓이만 구하면 된다. 참외밭은 ㄱ-자 모양이거나 ㄱ-자를 90도, 180도, 270도 회전한 모양(┏, ┗, ┛ 모양)의 육각형이다. 다행히도 밭의 경계(육각형의 변)는 모두 동서 방향이거나 남북 방향이었다. 밭의 한 모퉁이에서 출발하여 밭의 둘레를 돌면서 밭경계 길이를 모두 측정하였다. 예를 ..
·Algorithm/baekjoon
문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다. 이 편집기가 지원하는 명령어는 다음과 같다. L 커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨) D 커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 무시됨) B 커서 왼쪽에 있는 문자를 삭제함 (커서가 문장의 맨 앞이면 무..
·Algorithm/baekjoon
문제 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오. 수는 0으로 시작할 수 있다. 입력 첫째 줄에 N (1 ≤ N ≤ 1,000)이 주어진다. 출력 첫째 줄에 길이가 N인 오르막 수의 개수를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 1 예제 출력 1 10 예제 입력 2 2 예제 출력 2 55 예제 입력 3 3 예제 출력 3 220 문제 코드 n = int(input()) dp = [[0 for _ in range(9)]for _ in ra..