본문 바로가기

백준

[BOJ] 백준 2178 미로찾기 - 파이썬 출처 : https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net n, m = map(int, input().split()) dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] graph = [] for i in range(n): graph.append(list(map(int, input()))) count = 0 queue = [[0, 0]] def bfs(): while queue: a, b = queue.pop(0) for i .. 더보기
[BOJ] 백준 2667 파이썬 - 단지번호 붙이기 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 전형적인 BFS의 문제로서 인접해 있는 집들을 하나의 단지로 묶어준 후 각 단지 내에 있는 집의 수를 오름차순으로 정렬해 주는 문제. def bfs(x, y): queue.append([x, y]) # 처음에는 원소가 없으므로 추가 시켜줌 graph[x][y] = 0 # 중복 방문을 피하기 위해 방문을 했다면 0으로 변환 count = 1 # 묶여 있는 단지를 세어주기 위한 변수 선언 while queue: # queue가 비어있지 않다면 a, b = queue... 더보기
[BOJ] 백준 1260 파이썬 - DFS와 BFS 문제 출처 : 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 기본적인 DFS 와 BFS를 이용해 방문하는 노드를 순서대로 정렬하는 문제 입니다. n, m, v = map(int, input().split()) dic = {} for i in range(n): dic[i+1] = set() # 각각의 간선에 연결된 노드 표시 for j in range(m): a, b = map(int, input().split()) dic[b].add(a) dic[a].add(b) # 서.. 더보기
[BOJ] 백준 2798 파이썬 - 블랙잭 n, m = map(int, input().split()) numList = list(map(int, input().split())) if len(numList) > n:# 1 numList = numList[:n] answer = [] for i in range(len(numList)-2):# 2 for j in range(i+1, len(numList)-1): for k in range(j+1, len(numList)): a = numList[i]+numList[j]+numList[k]# 3 if a 더보기
[BOJ] 백준 1152 파이썬 - 단어의 개수 word = input().split() print(len(word)) 더보기
[BOJ] 백준 11729 파이썬 - 하노이 탑 이동 순서 def hanoi(n, a, b, c): if n == 1: print(a, c) # 1 -> 3으로 바로 else: hanoi(n-1, a, c, b) # 제일 큰 원판 제외 모두 1 -> 2로 옮김 print(a, c) # 제일 큰 원판 1 -> 3 hanoi(n-1, b, a, c) # 2의 역할을 했던 막대가 1의 역할로 변경되고 1이 2의 역할을 하며 재귀 n = int(input()) print(2**n-1) hanoi(n, 1, 2, 3) 더보기
[BOJ] 백준 2447 파이썬 - 별 찍기 def rect_star(x, y, n, ls): if n == 3: ls[x + 1][y + 1] = " " else: temp = n // 3 for i in range(x + temp, x + 2 * temp): for j in range(y + temp, y + 2 * temp): ls[i][j] = " " for i in range(0, n, temp): for j in range(0, n, temp): rect_star(x + i, y + j, temp, ls) n = int(input()) ls = [["*" for i in range(n)] for i in range(n)] rect_star(0, 0, n, ls) for i in range(0, n): for j in range(0, n).. 더보기
[BOJ] 백준 2798 파이썬 - 블랙잭 흔히 아는 포커의 블랙잭을 코드로 구현하는 문제입니다. 포커의 블랙잭과 다른 점은 포커는 21로 고정된 반면 이 문제는 직접 대입한 숫자를 넘지 않는 최대 숫자를 찾는 문제입니다. 조합하는 카드의 개수는 3장입니다. n, m = map(int, input().split()) numList = list(map(int, input().split())) if len(numList) > n: numList = numList[:n] 우선 카드의 개수 n과 저희가 접근하고자 하는 최댓값 m을 input으로 받아줍니다. 그다음 줄에는 저희가 사용하고자 하는 카드를 n개만큼 입력받아 numList에 저장합니다. if문은 만약 실수로 카드를 n개 이상 입력받았을 시 n장 까지만 저장되도록 슬라이싱 해주는 역할을 합니다... 더보기