전체 글 270

백준 2667번 단지 번호 붙이기 파이썬 DFS

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 답안 lst = [] n = int(input()) graph = [] for i in range(n): graph.append(list(map(int, input()))) def dfs(x, y): if x = n or y = n: return False if graph[x][y] == 1: graph[x][y] = 0 lst.append(0) dfs(x-1, y) # 상 dfs(x, y-1) #..

BOJ/Python 2022.02.04

백준 1260번 DFS와 BFS 파이썬

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net from collections import deque import sys def bfs(graph, v, visited): q = deque([v]) visited[v] = True while q: v = q.popleft() print(v, end = " ") for i in graph[v]: if not visited[i]: q.append(i) visit..

BOJ/Python 2022.02.03

백준 10809번 알파벳 찾기 파이썬

https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net x = input() result = [-1]*26 # 전체 -1 for i in x: c = ord(i) - 97 result[c] = x.index(i) # 알파벳 처음 등장 위치 for i in result: print(i, end = ' ') 처음 for 문을 통해 구현을 할 수 있으면 간단하게 생각할 수 있는 문제였다. 여기서 ord 함수는 문자 --> 유니코드로 변경해 주는..

BOJ/Python 2022.01.29

백준 3036번 링 파이썬

https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net import math N = int(input()) r = list(map(int, input().split())) for i in range(1, N): g = math.gcd(r[0], r[i]) print(f'{r[0]//g}/{r[i]//g}') 이 문제의 핵심은 최대공약수를 구하여 각 수들을 나눠주는 것 이라고 생각 한다. 만약 math 라이브러리를 모르고 gcd() 함수를 모른다면, 아래와 같이 직접 gcd 알고리즘을 ..

BOJ/Python 2022.01.17

백준 9012번 괄호 파이썬

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net for i in range(int(input())): result = 0 for j in input(): if j == '(': result += 1 else: # j = ')'일때 result -= 1 if result < 0:# 결과가 음수로 되는 순간 끝 break if result == 0: print("YES") else: print("NO") 처음 코드를 ..

BOJ/Python 2022.01.16

백준 23813번 회전 파이썬

https://www.acmicpc.net/problem/23813 23813번: 회전 정수 $N$이 주어질 때, $N$의 일의 자리 숫자를 떼서 제일 앞자리 왼쪽에 이어 붙힌 것을 $N$의 회전이라고 정의하자. 예를 들어, 12345의 회전은 51234가 된다. 3의 회전은 3이 된다. 이렇게 회전을 계 www.acmicpc.net N = input() x = 0 result = 0 for i in range(len(N)): x += int(N[i]) for i in range(len(N)): #15 + 150 + 1500 + 15000 + 150000 result += (x * (10**i)) print(result) 어떤식으로 돌아가는 패턴만 알면 무지 간단한 문제이다.

BOJ/Python 2022.01.15

백준 1920번 수 찾기 파이썬

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 이 문제는 시간제한이 1000ms이기 때문에 시간 복잡도를 잘 활용해야 한다. 문제를 보자마자 이진 탐색이라는 걸 알았지만 혹시 몰라서 간단하게 코딩을 했었다. N = int(input()) NA = list(map(int, input().split())) M = int(input()) MA = list(map(int, input().split())..

BOJ/Python 2022.01.14

[자료구조] 이진 탐색 (Binary Search) 파이썬 재귀 반복문

- 이진탐색 이진 탐색은 데이터가 정렬되어 있는 배열에서 찾고자 하는 수를 찾아내는 방법이다. 데이터가 정렬되어 있는 배열을 data 라고 정하고 찾고자 하는 수를 target 이라고 하자. 배열의 중간 인덱스를 mid 로 정한다. 찾고자 하는 수 ( target ) 가 배열의 중간값 ( data[mid] ) 보다 크다면 우측 데이터 대상으로, 찾고자 하는 수 ( target ) 가 배열의 중간값 ( data[mid] ) 보다 작다면 좌측 데이터 대상으로 탐색을 한다. 찾고자 하는 수가 어디에 있냐에 따라 start 와 end의 위치를 변경해준다. 이러한 방법을 반복하여 찾고자 하는 수를 찾을 때까지 반복해 준다. 정리하면 이렇게 된다. ▷ target : 찾고자 하는 값 ▷ data : 오름차순으로 정..

Algorithm 2022.01.13

백준 18406번 럭키 스트레이트 파이썬

https://www.acmicpc.net/problem/18406 18406번: 럭키 스트레이트 첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. www.acmicpc.net x = input() half = len(x)//2 left = 0 right = 0 for i in range(0, half): left += int(x[i]) for i in range(half, len(x)): right += int(x[i]) if left == right: print("LUCKY") else: print("READY") 무조건 짝수 입력이기 때문에 그냥 가운데 기준으로 짤라 왼쪽과 오른쪽 수들의 합이 같으면 LUCKY 출력..

BOJ/Python 2022.01.12

백준 10866번 덱 파이썬

https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net import sys from collections import deque d = deque() for i in range(int(sys.stdin.readline())): x = sys.stdin.readline().split() if x[0] == "push_back": d.append(x[1]) elif x[0] == "push_front": d.appendleft(x[1]) ..

BOJ/Python 2022.01.11
반응형
목차(index)