본문 바로가기

728x90
반응형

전체 글

(122)
[백준 / 1051] 숫자 정사각형 - Python https://www.acmicpc.net/problem/1051 1051번: 숫자 정사각형 N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 www.acmicpc.net 원하는 정사각형의 조건은 같은 행, 같은 열에 존재한다. 한 노드를 기준으로 같은 줄의 같은 숫자를 찾아서 해당 거리를 구하고, 그 거리만큼 떨어진 사각형의 위치에 같은 숫자가 존재하는지를 판단하면 된다. N, M = map(int, input().split()) square = [] for _ in range(N): square.append(list(map(int, input()))) N행 ..
[백준 / 1350] 진짜 공간 - Python https://www.acmicpc.net/problem/1350 1350번: 진짜 공간 첫째 줄에 파일의 개수 N이 주어진다. N은 1,000보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아 www.acmicpc.net 만약 file의 크기가 0이면 클러스터의 개수를 더하지 않고, file의 크기가 클러스터와 같거나 작다면 개수를 1 더해주고, 클러스터의 크기보다 크다면 file을 클러스터로 나눴을 때 나누어 떨어지는 경우 몫만큼 개수를 더해주고, 나머지가 있는 경우 몫을 더한 값에 1을 더 더해준다. input() files = list(map(int, input().split())) clus..
[백준 / 1389] 케빈 베이컨의 6단계 법칙 - Python http://acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 문제에서 구하고자 하는 '케빈 베이컨의 수가 가장 작은 사람을 구하는 프로그램'은 즉 '모든 최단경로들의 합'이다. 따라서 모든점에서 다익스트라 알고리즘을 구해서 모든 경로의 합을 더하여 제일 짧은 사람을 구하면 된다. 다익스트라 알고리즘으로 한 점에서 갈 수 있는 모든 노드 최단거리를 구하여 모두 더한다. 존재하는 모든 노드들의 구한 합을 비교하여 제일 짧..
[백준 / 1422] 숫자의 신 - Python https://www.acmicpc.net/problem/1422 1422번: 숫자의 신 첫째 줄에 K와 N이 공백을 사이에 두고 주어진다. K와 N은 각각 1,000보다 작거나 같은 자연수이고, N은 K보다 크거나 같다. 둘째 줄에는 K개의 수가 한 줄에 하나씩 주어진다. 각 수는 1,000,000,000보 www.acmicpc.net 수를 입력받아서 list에 저장한다. 리스트에 있던 기존의 수와 비교해서 앞에 넣을지 뒤에 넣을지 큰 수로 비교한다. 무조건 N개의 수들은 한 번씩 들어가야 하고, K번을 뽑아야 한다. 따라서 K가 더 큰 경우 반복되어야 할 수가 존재한다. 제일 큰 수를 반복하면 된다. 모든 수를 비교하여 앞에 넣을지 뒤에넣을지 판단 숫자적으로 제일 큰 수를 반복한다. K, N = ma..
[백준 / 1347] 미로 만들기 - Python https://www.acmicpc.net/problem/1347 1347번: 미로 만들기 홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍 www.acmicpc.net 이중리스트로 그래프를 그린다. 현재 진행 방향과, 현재 좌표, 리스트의 크기를 가지고 그래프를 그린다. 만약 리스트의 범위를 벗어나는 곳을 방문하면 리스트의 크기를 늘리면서 그래프를 그린다. N = int(input()) moves = input() # 북 : 1, 동 : 2, 남 : 3, 서 : 4 direction = 3 cur_Row = 0 cur_Col = 0 len_Row = 1 len..
[백준 / 1238] 파티 - Python https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net N과 목적지 X가 있다고 하면 N -> X -> N의 최단 거리를 구하면 된다. 전체 노드로부터 목적지 X까지의 최단거리와 X에서 전체 노드까지의 거리를 '다익스트라 알고리즘'을 통하여 구해 비교해준다. 따라서 다익스트라 알고리즘을 선행해야 한다. 2021.03.18 - [# Coding/# Algorithm] - [보기 쉬운 Algorithm] 다익스트라(Dijks..
[백준 / 1182] 부분수열의 합 - Python https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 파이썬 모듈 중 combinations을 이용하여 부분 수열을 모두 구하고, 해당 부분 수열의 합과 S를 비교하여 같은 개수를 출력한다. from itertools import combinations N, S = map(int, input().split()) numberSet = list(map(int, input().split())) combinations를 ..
[백준 / 1159] 농구 경기 - Python https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 입력을 받은 성의 첫 글자를 딕셔너리의 키로 정하고, 해당 글자의 개수를 세어준다. 5글자가 넘으면 저장하여, 저장된 문자가 있으면 문자들을 출력하고, 없으면 'PREDAJA'를 출력한다. N = int(input()) names = {} for _ in range(N): name = input() 총 성의 개수 N을 입력받는다. names는 각 성의 첫 글자를 key로 한 글자의 개수를 세어주기 위해 ..

728x90
반응형