본문 바로가기

python314

백준 python3 잦은 시간초과 팁 언어가 간편하고 의사코드에 가깝게 슥슥 쓸 수 있어서 알고리즘 공부할 때에는 python을 선호하는 편이다. 따라서 자연히 알고리즘 문제 풀 때에도 python3로 풀게 되었는데, 이상하게도 시간초과가 너무 자주 난다. python이 다른 언어에 비해 많이 느린 편인건 알고 있었지만, 다른 사람의 풀이를 그대로 적어봐도 시간초과가 나는건 좀 너무하지 않았는가? 나는 당연히 내 로직에 문제가 있을거라 생각해서 로직만 n시간동안 들여다봤는데, 해답은 의외의 곳에서 찾았다. from sys import stdin input = stdin.readline 코드 상단에 위의 코드를 첨부해주니, 바로 해결되었다. 왜이럴까 찾아보니, 다음과 같은 댓글을 발견하였다. 2020. 3. 12.
[백준] 3055 탈출 python3 문제 : https://www.acmicpc.net/problem/3055 3055번: 탈출 문제 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제일 친한 친구인 비버의 굴로 가능한 빨리 도망가 홍수를 피하려고 한다. 티떱숲의 지도는 R행 C열로 이루어져 있다. 비어있는 곳은 '.'로 표시되어 있고, 물이 차있는 지역은 '*', 돌은 'X'로 표시되어 있다. 비버의 굴은 'D'로, 고슴도치의 위치는 'S'로 나 www.acmicpc.net 대충 이민혁씨가 잘못했다는 내용 코드 from collections import deque dx = [1, -1, 0, 0] dy .. 2020. 3. 12.
[백준] 2667 단지번호붙이기 python3 문제 : https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수 www.acmicpc.net 코드 from collections import deque N = int(input()) visited = [[False]*N for _ in range(.. 2020. 3. 10.
[백준] 1967 트리의 지름 python3 문제 : https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n번째 줄까지 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연결하는 두 노드 중 부모 노드의 번호를 나타내고, 두 번째 정수는 자식 노드를, 세 번째 정수는 간선의 가중치를 나타낸다. 간선에 대한 정보는 부모 노드의 번호가 작은 것이 먼저 입력되고, 부모 노드의 번호가 같으면 자식 노드의 번호가 작은 것이 먼 www.acmicpc.net python3 코드 # 임의의 노드 A에서 가장 먼 노드 B는 반드시 이 트리의 지름을 구성하게 된다. from collec.. 2020. 3. 10.
[백준] 14501 퇴사 python3 문제 : https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 N = int(input()) T = [0] * (N+1) P = [0] * (N+1) for i in range(1, N+1): T[i], P[i] = map(int, input().split(" ")) # 격자 만들기 grid = [[0]*(N+1) for _ in range(N+1)] # row: 상담, column: 일 # 격자 채우기 for row in range(1, N+1): time = T[row] price = P[row] for col in range(1, N+1): previous = max(grid.. 2020. 3. 8.
[백준] 2875 대회or인턴 python3 문제 : https://www.acmicpc.net/problem/28752875번: 대회 or 인턴문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 그런데 올해에는 대회에 참여하려는 학생들 중 K명을 반드시 인턴쉽 프로그램에 참여하라는 학교의 방침이 생기게 되었다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다. 백준대학교에서는 뛰어난 인재들이 많기 때문www.acmicpc.net 굉장히 간단한 문제인데 어렵게 꼬아서 생각해서 오래 걸렸던 문제다.크게 두 가지 방법이 있다곤 하는데, 영 이해가 안돼서 그냥.. 2020. 2. 29.