목록백준 문제풀이 (18)
minhui study
https://www.acmicpc.net/problem/1969 1969번: DNA 문제 DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클 www.acmicpc.net 첫 줄에 DNA의 수 N과 문자열의 길이 M이 주어진다. 그리고 둘째 줄부터 N+1번째 줄까지 N개의 DNA가 주어진다. (N은 1,000보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다.) Hamming Distance합이 가작 작아야하므로 각 DNA의 특정 위치 문자들만 추출하여 A, C, G, T와 비교한 후 A, C, G, T..
https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 � www.acmicpc.net 문제 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 길이는 B의 길이보다 작거나 같다. 이제 A의 길이가 B의 길이와 같아질 때 까지 다음과 같은 연산을 할 수 있다..
https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아 www.acmicpc.net 최대 팀의 수를 구해야 하므로 팀을 하나씩 늘려가면서 남은 사람 수와 인턴십에 참여해야 하는 사람를 그리고 여학생, 남학생 수가 0보다 작아지지는 않는지 비교해가면서 만약 조건에 충족하지 않으면 break문으로 나와 최대 팀의 수를 출력한다. PYTHON N, M, K=map(int, input().split()) team = 0 while True : N-=2 M-=1 if N
https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net "잃어버린 괄호" 문제는 가장 최소의 결과를 얻는 괄호를 쳐서 최소의 결과를 얻어내야 한다. 즉, 빼기를 할 때 최대한 큰 수를 빼야하므로 '-'뒤에 있는 수를 최대한 크게 만들어야 한다. 마이너스 기호를 만날 때 다음 마이너스 까지, 다음 마이너스가 없다면 수식의 마지막까지 모든 수를 더해서 한 번에 빼 주면 최소의 결과가 나오게 된다. 만약 '-'가 없으면 모든 숫자를 더한다. n=inp..
https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶� www.acmicpc.net 먼저 30배수의 조건을 알아보자 30의 배수는 맨 끝자리가 0이여야 하고 자리수를 다 더하면 3의 배수여야 한다. 1) 0이 없으면 -1을 반환해야 한다. 2) 각 자리수를 다 더해서 3의 배수가 아니면 -1을 반환해야 한다. 그리고 만약 30의 배수의 조건을 다 성립한다면 즉, 0도 있고 각 자리수를 다 더해서 3의 배수라면 가장 큰 수를 구해야 하므로 가장 큰 숫자가 앞 자리에 오게끔 내림차..
https://www.acmicpc.net/problem/2217 2217번: 로프 N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 www.acmicpc.net 만약 로프가 { 10, 80, 50, 5 }가 있다고 가정해보자 내림차순으로 정리하면 { 80, 50, 10, 5 } 이렇게 되는데 이때 중량이 각각의 루프에 똑같이 걸리므로 80*1 또는 50*2, 10*3, 5*4 중 가장 큰 값을 고르면 된다. 즉, 가장 무거운 중량을 들 수 있는 루프는 1개 사용하거나 무거운 중량을 못드는 루프 기준으로 루프를 여러개 사용하거나 이 중 중량을 더 많이..
acmicpc.net/problem/5585 5585번: 거스름돈 문제 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건� www.acmicpc.net 거스름돈을 최소한 갯수의 동전으로 만들어야 하므로 가장 큰 동전부터 계산을 해야 한다. 가장 큰 동전을 먼저 나누고 몫은 즉 동전의 개수를 의미하므로 count변수에 더하고 다음 for문으로 가기 전에 나눠서 남은 돈을 저장하고 이 과정을 반복하여 최소 갯수를 구한다. n=int(input()) m=1000-n #500,100,50,10,5,1 arr=[500,100,50,10,5,1] coun..
https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 여기서는 끝나는 시간에 제일 중요하다. 즉, 끝나는 시간을 기준으로 비교하여 앞에 끝나는 시간과 겹치지 않는 선에서 가장 빨리 끝나는 것으로 택하여 회의를 고르다 보면 최대 갯수를 구할 수 있다. n=int(input()) arr=[] for i in range(n): a=list(map(int,input().split())) arr.append(a) arr.sort(key=lambda x: (x[1], x[0])) answer=1 end=arr[0][1] for i in range(1,n): if arr[i][0..