[백준][Python] 18110번 solved.ac - 코팩
·
백준/구현
https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net 풀이 구현문제로써 반올림을 구현하여 문제를 풀어주었습니다. 주의: round()를 쓰면 안됩니다. round()는 정확한 반올림을 해주는 함수가 아닙니다. 코드 # 18110번 solved.ac import sys def banollim(n): if n - int(n) >= 0.5: return int(n)+1 return int(n) t = int(input()) i..
[백준][Python] 13549번 숨바꼭질 3(다익스트라 풀이) - 코팩
·
백준/최단거리
https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 풀이 계획 - 가중치가 다르게 주어진 그래프 이동을 하는 문제 - 한 정점에서 다른 모든 정점으로부터의 최단거리 계산 - 다익스트라 알고리즘 적용 코드 # 13549번 숨바꼭질 3 import sys import heapq input = sys.stdin.readline INF = sys.maxsize def rangeValid(v): if 0 dist: if..
[백준][Python] 1236번 성 지키기 - 코팩
·
백준/구현
https://www.acmicpc.net/problem/1236 1236번: 성 지키기 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다 www.acmicpc.net 풀이 처음에는 어떻게 풀지 고민해보았는데, 문제에서 요구하는 바는 행과 열마다 경비원이 하나씩 존재해야한다는 것이다. 어느 n행과 m열이 주어졌을 때 두 직선의 교점에 경비원이 위치한다면 한 경비원으로도 문제에서 원하는 바를 만족시킬 수 있다는 것이다. 그말은 즉슨 가장 긴 직선의 길이만큼 경비원을 배치해준다면 다른 직선의 경비원 문제는 자연스럽게 해결된다는 것이다. 코드 # 1236번..
[백준][Python] 2573번 빙산 - 코팩
·
백준/DFS&BFS
https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 풀이 BFS알고리즘을 사용하였습니다. 코드 # 2573번 빙산 import sys from collections import deque dxys = [[1,0],[-1,0],[0,1],[0,-1]] # bfs 두번 실행 def bfs(s_x, s_y): queue = deque([]) queue.append([s_x, s_y]) visited[s_y][s_x] = True while queu..
[백준][Python] 1987번 알파벳 - 코팩
·
백준/DFS&BFS
https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 풀이 BFS 문제 풀이를 위해서 기존에 자료구조를 deque으로 사용하였지만 이번에는 set으로 구현해주었습니다. 더군다나 지나온 경로를 일일이 set이나 list에 저장할 경우 메모리 초과가 발생하기에 문자열로 저장해주었습니다. 다음번에는 경로문제가 생길경우에 DFS를 우선시해서 풀어보겠습니다. 코드(BFS) # 1987번 알파벳 dxys = [[1,0],[-1,0],[0,1],[0,-1..
[백준][Python] 11478번 서로 다른 문자열의 개수 - 코팩
·
백준/구현
https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 풀이 구현문제를 풀기 위해 인덱싱을 통해서 풀어주었습니다. 코드 # 11478번 서로 다른 부분 문자열의 개수 t = input() li = set() length = len(t) for space in range(1, length+1): for j in range(length-space+1): # 인덱스 기준 li.add(t[j:j+space]) print(len(list(li))) 출력결과
[백준][Python] 7785번 회사에 있는 사람 - 코팩
·
백준/구현
https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 풀이 집합을 이용해서 풀어주었습니다. 코드 # 7785번 회사에 있는 사람 import sys n = int(input()) li = set() for _ in range(n): name, stat = input().rstrip().split() if stat == "enter": li.add(name) else: li.discard(name) print("..
[백준][Python] 1010번 다리 놓기 - 코팩
·
백준/구현
https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 풀이 강 동쪽에 있는 점에서 강 서쪽 점의 개수만큼 뽑아주는 문제이기에 조합을 써주면 됩니다. 이를 위해 조합을 구현해주었습니다. 코드 # 1010번 다리 놓기 t = int(input()) def factorial(k): cnt = 1 for i in range(1, k+1): cnt *= i return cnt for _ in range(t): n, m = map(int, input().spl..
개발자 성현
'백준' 카테고리의 글 목록 (7 Page)