본문 바로가기

BOJ

[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] 백준 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장 까지만 저장되도록 슬라이싱 해주는 역할을 합니다... 더보기
[BOJ] 백준 10870 파이썬 - 피보나치 수 5 유명한 수열 중에 하나인 피보나치 수열을 재귀함수로 구현하는 문제입니다. def fibonacci(n): if n == 0: return 0 elif n == 1: return 1 return fibonacci(n-1) + fibonacci(n-2) 먼저 n 이 0 과 1 일때는 두번 루프를 돌 수 있는 수의 개수가 되지 않기 때문에 0과 1에 대한 피보나치 수를 지정 해주어야 합니다. 그 이후 2 부터는 fibonacci(0) + fibonacci(1)로 함수가 돌기 시작하기 때문에 지정해 줄 필요가 없습니다. n = int(input()) print(fibonacci(n)) 정의를 해준 함수 아래 우리가 대입할 수를 불러와 print해주면 끝납니다. [전체 코드] def fibonacci(n): if.. 더보기
[BOJ] 백준 10250 파이썬 - ACM 호텔 높이 h, 폭 w 로 이루어진 ACM 호텔의 n 번째 손님에게 최단거리에 위치한 방을 배정해주는 문제이다. for i in range(t): h, w, n = map(int, input().split()) 따져줘야 하는 경우가 두 가지가 있다. 첫 번째로, n번째 손님이 맨 꼭대기 층에 배정되는 경우이다. if n % h == 0: col = n / h floor = h 맨 꼭대기 층이라는 말은 n이 h의 배수라는 소리이다. 그 경우 층은 항상 h와 같다. 두 번째는, 그 외의 경우이다. else: col = n // h + 1 floor = n % h 이 경우, 층수는 n을 h로 나눈 나머지이다. 호수는 나머지가 존재하므로 그 +1 한 그 다음칸이 호수가 된다. 방 번호는 "층수 x100 + 호수"를 .. 더보기