본문 바로가기

파이썬

(23)
[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 https://programmers.co.kr/learn/courses/30/lessons/12910?language=python3 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하� programmers.co.kr 이 문제는 안풀어져 있어서 업로드 하려고 풀었다. 30초짜리 문제인데, 풀고 베스트 해설을 봤더니 or을 썼더라 앞이 False ([]) 이면 [-1]을 리턴하기 위함이다. 정말 좋은 아이디어다... 대박 def solution(arr, divisor): retu..
[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을 해주었으니 홀수의 경우 가운데, 짝수..
[LV1] 프로그래머스 2016년 python https://programmers.co.kr/learn/courses/30/lessons/12901 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까�� programmers.co.kr sum([0:0])은 0이다 -_-;; 인덱싱과 슬라이싱을 잘 쓰면 되는 문제다. def solution(a, b): month_days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] day_order = ["FRI", "SAT", "SUN", "MON", "TUE", "WE..
[LV1] 체육복 Python https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번� programmers.co.kr 해당 문제는, 도난당했으면서 여벌이 있는 경우의 친구가 함정이다. 따라서 reserve - lost와 lost - reserve를 각각 구해준다. 또 반복문을 어떻게 돌릴까도 문제인데... 바깥쪽 순회 리스트에서 데이터를 삭제하면 안된다. 따라서 reserve를 순회하며 lost에서 체육복을 받는 경우를 제거하자. def solution(n, lost, rese..