www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net (풀이) 시간 제한이 0.5초이기 때문에 평소처럼 반복문에서 일일이 비교하면 시간 제한으로 틀릴 수 있다. 투포인터 알고리즘을 이용해서 풀었는데 만약 끝(end)이 n과 같아져서 풀이를 끝내면 end는 그대로 있고 start가 증가 할 경우를 빠뜨릴 수 있기 때문에 start, end, n 이 세가지가 같아질 경우 반복문이 끝내게 만들었다. 또한 반복문 안에서 합이 m보..
www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 일곱 숫자의 합이 100이 되며 고정적으로 9개의 숫자를 입력 받으니 전체 합에서 두개를 뺀 값이 100이 되면 된다. 당연히 7개의 숫자를 더하는 코드를 짜는 것보다 100이 되게 빼는 2개의 숫자를 구하는 것이 간단하다. import sys input = sys.stdin.readline arr = list() result_arr = list() for i in range(9): arr.append(int(input..
www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 딜러가 외치는 m보다 작은 최대합을 구하는 문제이다. 배열안에서 세 개의 수를 골라 합을 구하면 되므로 for문을 3개사용해서 답을 구했다. 아무래도 for문이 3개 쓰이다 보니 시간복잡도가 커서 틀릴 줄 알았는데.. 맞았다..!? import sys input = sys.stdin.readline n,m = map(int,input().split()) arr = list(map..
programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 주어진 리스트에서 i,j,k 변수를 뽑아 해당하는 위치의 숫자를 도출하면 되는 문제였다. 리스트의 인덱스 부분만 신경 쓰면 쉽게 풀 수 있는 문제였다. def solution(array, commands): answer = [] for command in commands: i = command[0] j = command[1] k = command[2] temp = array[i-1:j] temp.sort() answer.append(temp[..
programmers.co.kr/learn/courses/30/lessons/12919 코딩테스트 연습 - 서울에서 김서방 찾기 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니 programmers.co.kr 리스트를 for문으로 돌면서 kim이 있으면 답이되는 문장을 return 해주면 되는 문제이다. def solution(seoul): answer = '' for i in seoul: if i == 'Kim': answer = "김서방은 "+str(seoul.index(i)) + '에 있다' retur..
programmers.co.kr/learn/courses/30/lessons/12912 코딩테스트 연습 - 두 정수 사이의 합 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우 programmers.co.kr 두 수 사이의 합을 구하면 되는 문제로, a >= b 일때와 a < b 일때 이렇게 두가지 경우를 따로 구해주면 된다. def solution(a, b): answer = 0 if a