링크 : https://www.acmicpc.net/problem/2467 문제소요시간: 34분 19초설계하기(접근방법) 1. 입력받기입력에는 큰 문제가 없다 2. 구현하기포인터의 위치를 어디에 둘지 생각하다 시간은 좀 썼다. 모든 수가 양수일때는 가장 앞의 2개의 수모든 수가 음수일 때는 가장 뒤의 2개의 수 를 출력하면 된다 나머지의 경우에는 다음과 같은 방식으로 포인터를 조절할 수 있다중간에 둘의 합이 0인 경우에는 바로 break하면 된다 -7 -5 -3 -2 -1 0 4 8일 때, 처음에는 양 끝에서 출발한다 1 단계)o o-7 -5 -3 -2 -1 0 4 8 둘의 합은 1, 즉 양수이니 양수의 크기를 줄여준다면 절대값이 작아지는 것을 기대할 수..
링크 : https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 문제 소요시간: 34분 47초 설계하기(접근방법) 1. 입력받기 배열을 입력받는다 2. 구현하기 먼저 배열을 정렬해준다 그래야 가장 큰값과 가장 작은 값을 더하면서 비교할 수 있다 최소값은 sys.maxsize로 선언해준다 그 후 양 끝을 p1 = 시작점 index = 0 p2 = 끝점 index = n - 1 로 잡는다 그 둘을 더해본다 그것의 절대값과..
링크 : https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제 소요시간 : 1시간 실패 설계하기(접근방법) 1. 입력받기 배열을 입력받는다 2. 구현하기 처음에는 길이가 1인 부분합, 2인 부분합.... 식으로 구했으나 결국에는 시간초과가 났다 아이디어를 바꾸어 s 이상일 때까지 p2를 움직이고 s 이상이 되면 최소 길이와 비교하고 s 미만이 될때까지 p1을 증가시키는 방식을 떠올렸다 아이디어는 맞았으나 구현을 하기 못해 실패했다..
링크 : https://www.acmicpc.net/problem/2230 2230번: 수 고르기 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 www.acmicpc.net 문제 소요시간: 28분 7초 설계하기(접근방법) 1. 입력받기 숫자를 입력받는다 2. 구현하기 투 포인터를 사용하기 위해서 먼저 리스트를 정렬한다 처음 시작 지점을 리스트의 인덕스 p1 = 0번 인덱스 p2 = 1번 인덱스로 지정한다 먼저 p2 -p1이 m 이상인 경우 그 뒤의 p2는 증가시켜줄 필요가 없다 p2가 커질 수록 둘의 차이가 커지기 때문에 현재 p1에서는 ..
링크 : https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 문제 소요시간: 4분 14초 설계하기(접근방법) 1. 입력받기 고유번호 개수 타겟 숫자 고유번호 리스트를 입력받는다 2. 구현하기 고유하다는 문제의 조건에서 해시함수 즉 딕셔너리를 떠올릴 수 있다 15000개의 데이터를 전부 하나씩 찾는다면 시간초과에 걸릴 것이니 딕셔너리에 15000개의 데이터를 넣고 타겟 넘버인 m 에 고유번호 숫자를 뺀 값 ex) m - 7 ..