본문 바로가기

Python

(23)
[COS PRO 1급 문제 회고] 비트마스크로 모든 부분집합의 합 구하기 Cos Pro 자격시험 MOS 공식 사이트, COS 공식 사이트, COS Pro 공식 사이트, DATA 공식 사이트 Microsoft 국제인증 자격시험, Scratch, Entry(블록코딩)에 대한 자격증, Python, C, C++, Java에 대한 자격증, Python, Excel에 대한 데이터 분석 자격증 www.ybmit.com Cos Pro에 비트연산 문제가 나왔는데, 굉장히 신박했다. 알고리즘 테스트에 이런게 나오다니... 대학교 중간, 기말고사에나 나올법한 문제다. 덕택에 시간과 점수를 오지게 깎였다. 900점 넘기는게 목표였는데 달성 실패 ㅅㅂ 그냥 나는 COS PRO라는 시험이랑 안맞는것 같다. 앞으로 다시는 안 볼것 같다. 이번에도 한문제인가 두문제 빼고 못풀었는데(이문제 때문에 시간 ..
합이 S와 같거나 큰 subarray의 최소 길이 구하기 Smallest Subarray With a Greater Sum (easy) 리트코드의 이지 난이도 문제풀이다. 앞의 최대 합 서브어레이 구하기 응용인데, 다른 점은 if를 while로 변경해주는 점이다. (하나의 값을 더했을 때, S값을 넘어버릴 수 있기 때문이다.) 또 나는 길이를 length 변수로 따로 선언했는데, window_end-window_start+1로 바로 구할 수 있다. 알고리즘 풀이에는 루프를 돌면서 증가시켜줘야 하는 값 갯수는 최소화 시켜주는게 맞다고 생각. 아니면 효율성은 약간 떨어지더라도, 코드로 뽑아내는(함수로) 방법도 있음. 파이썬 풀이 def smallest_subarray_sum(s, arr): window_sum = 0 min_length = math.inf wind..
K 사이즈 배열의 가장 큰 합 구하기 Maximum Sum Subarray of Size K (easy) 리트코드의 이지 난이도 문제 풀이다. 시간 복잡도 : O(N) 공간 복잡도 : O(1) (배열 요소 없이 정수형 변수만 사용) 루프 밖에 윈도우 시작 인덱스 0으로 초기화(window_start=0) 길이 k가 되기 전엔 계속 더함 길이 k가 되면 (window_end>=k-1) 최대값 계산 맨 앞 인덱스 값 빼줌 맨 앞 인덱스 증가 파이썬 해답 def max_sub_array_of_size_k(k, arr): max_sum , window_sum = 0, 0 window_start = 0 for window_end in range(len(arr)): window_sum += arr[window_end] # 다음 요소 더함. # k 길이..
[LV1] 프로그래머스 문자열 내 p와 y의 개수 python https://programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 programmers.co.kr 단순 반복문 구현이다. 해당 문제는... 나는 이렇게 풀었다... def solution(s:str): answer = [0,0] for s in s.lower(): if s == 'p': answer[0]+=1 elif s =='y': answer[1]+=1 return True if an..
[LV1] 프로그래머스 문자열 내 마음대로 정렬하기 python 정렬 문제인데, key를 어떻게 사용하는지를 보여주는 아주 대표적인 문제이다. 이랑 비슷한 문제가 itertools의 cmp_to_key를 사용하는게 하나 더 있다. (x[n],x)로 하면 앞에 것을 먼저 적용한 뒤, 같을 경우 뒤 기준을 적용한다. 간단하게 이해하면, 퀵소트 같은 것을 하는데 비교를 대소 대신 이 함수를 쓸 수 있도록 해주는 것이다. 파이썬의 기본은 오름차순이다. 기억합시당. 뒤집으려면 reverse=True 인수를 넣어준다. def solution(strings, n): return sorted(strings, key = lambda x: (x[n],x))
[LV1] 프로그래머스 두 정수 사이의 합 python https://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 우리들이 좋아하는 등차수열 공식이다... (초항 + 말항 ) * 항 수 // 2 평균을 항 갯수만큼 곱해주면 해당 등차수열의 총 합이 나온다는 가우스 형님의 가르침. def solution(a, b): return (abs(a-b)+1)*(a+b)//2
[LV1] 프로그래머스 같은 숫자는 싫어 python # 1 뒤를 보며 짧게 풀기 def solution(arr): # 뒤를 보고 앞을 넣을까 말까 결정하기 때문에, 마지막 녀석은 무조건 추가해준다. test = [ v for i,v in enumerate(arr) if i+1 < len(arr) and arr[i+1]!=arr[i]] return test+[arr[-1]] # 2 닥치고 구현 def solution(arr): answer = [] for i in range(len(arr)): if not answer: answer.append(arr[i]) if answer[-1] == arr[i]: continue else: answer.append(arr[i]) return answer https://programmers.co.kr/learn/cour..
[LV1] 프로그래머스 가운데 글자 가져오기 python https://programmers.co.kr/learn/courses/30/lessons/12903 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 인덱싱과 슬라이싱 문제이다. 슬라이싱은 [i:i]이면 []을 리턴함을 주의한다. 인덱스에서 //2 를 하면 항상 내림을 하기 때문에.. 홀수의 경우 가운데, 짝수일 경우 가운데의 뒤를 가져온다. 5 -> 2 (01'2'34) 4 -> 2 (01'2'3) 따라서 해당 해설에서 뒤는 +1을 해주었으니 홀수의 경우 가운데, 짝수..