본문 바로가기

분류 전체보기

(54)
백준 10814 나이순 정렬 파이썬 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 핵심 키워드는 입력된 데이터를 잘 정제해 파이썬내에 sort를 적극적으로 활용하는 것이다. 나이가 같은 경우에 입력된 순서가 앞에 오는 것을 먼저 출력하니 [나이,[입력된 순서,이름]]이런 식으로 리스트를 만들어주면 나이가 같은 경우 입력된 순서가 작은 순서대로 정렬됨을 볼 수 있다. import sys #빠른 입력을 사용해주기 위한 import a =int(input()) s = [] for i in..
백준 18310 안테나 파이썬 https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net 모든 집까지의 거리의 총 합이 최소가 되는 경우를 구하는 것인데 최소가 되는 경우는 모든 집을 일렬로 나열했을때 중간에 있는 집을 고르는 경우이다. 따라서 n이 홀수일때는 s[n//2]을 출력해주면 되고 n이 짝수일때는 s[n//2]와 s[n//2-1]에 안테나를 설치 했을 경우에 합이 최소가 되는데 더 작은 값을 출력하라고 했으니 s[n//2-1]을 출력해주면 된다. n =int(input()) s = list(map..
백준 1769 3의 배수 파이썬 https://www.acmicpc.net/problem/1769 1769번: 3의 배수 문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를 www.acmicpc.net 문제에 나온 지문대로 코드를 만들면 되는 쉬운 문제였다. 한가지 주의할점이 있다면 시간초과 관련이다. or 시간 줄이기 n = input() c=0 while int(n)>=10: t = 0 for i in range(len(n)): t+=int(n[i]) n=str(t) c+=1 print(c) if int(n)%3==0: print("YES") else: print('NO') 위에 코드는 Pytho..
백준 12891 DNA 비밀번호 파이썬 https://www.acmicpc.net/problem/12891 12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 처음에는 문제를 주어진 문자열 속에서 P개의 문자를 뽑아 비밀번호를 만든다로 해석을 잘 못해 조합을써서 풀었더니 시간초과를 맛봤다. 그래서 왜 시간초과가 나는지 이해 못 했고 다른 사람들 풀이를 보니 문제가 부분 문자열 즉 이어진 문자만 가능하다는 것이였다.. 이 사실을 알고 문제 분류에 맞게 슬라이딩 윈도우 방법으로 풀어봤다. 코드 설명을 간단하게 하자면 우선 꼭 들어가야..
백준 1999 최대최소 파이썬 https://www.acmicpc.net/problem/1999 1999번: 최대최소 첫째 줄에는 세 정수 N, B, K가 주어진다. 다음 N개의 줄에는 행렬이 주어진다. 차례로 1행, 2행, …, N행이 된다. 각 줄에는 N개의 정수가 주어지며, 이는 차례로 1열의 성분, 2열의 성분, …, N열의 성 www.acmicpc.net 플레5 문제치고는 너무 쉬웠다... 이게 아직 데이터가 부족한 것인지 난이도 측정이 잘못된 것인지 아니면 파이썬이 개선돼 시간초과가 안나는 것인지 잘 모르겠지만 일단 AC를 받긴 받았다.. 처음에는 그냥 함수 하나 만들면 될거 같아 행과 열을 입력 받으면 그곳만 탐색해 최댓값 - 최솟값을 return해주는 함수를 만들어 출력해줬다. 당연히 처음부터 시간초과가 날것이라 생각했..
백준 1781 컵라면 파이썬 반례 O https://www.acmicpc.net/problem/1781 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라 www.acmicpc.net 처음 이 문제를 봤을때 그냥 우선순위 큐를써서 같은 데드라인 중에서 가장 큰 값을 제외한 나머지를 제거해 결과를 도출하면 되겠다고 생각해 그렇게 구현했다. import heapq import sys input= sys.stdin.readline n = int(input()) s=[] for _ in range(n): a,b = map(int,input().split()) heapq.heappush(s,(a..
백준 25425 운동회 파이썬 https://www.acmicpc.net/problem/25425 25425번: 운동회 첫째 줄에 $N, M, a, K$가 공백으로 구분되어 입력된다. $(1 ≤ N,M ≤ 10^9, 1 ≤ a ≤ N×M, 1≤ K ≤ M, K ≤ a)$ www.acmicpc.net n,m,a,k = map(int,input().split()) t=(a-k) #t는 준혁이 팀을 제외한 남은 인원 if t/n>=1: maxs = n #남은 인원 int(t/m)+ 1+1 print(maxs,mins)
백준 25426 일차함수들 파이썬 https://www.acmicpc.net/problem/25426 25426번: 일차함수들 첫째 줄에 일차함수의 개수 $N$이 주어진다. $(1≤N≤100,000)$ 둘째 줄부터 $N$줄에 걸쳐 $i$번째 일차함수를 나타내는 두 정수 $a_i, b_i$가 공백으로 구분되어 입력된다. $(0≤a_i, b_i≤ 10^9)$ www.acmicpc.net 정렬된 값을 문제에 맞게 계산해주면 되는 매우 간단한 문제 였다. import sys input = sys.stdin.readline t = int(input()) s=[] for _ in range(t): a,b = map(int,input().split()) s.append([a,b]) s.sort() re =0 for i in range(t): re+=..