일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 유사코드
- Combination
- 알고리즘
- 알고리즘의 조건
- 트리
- 알고리즘 표현
- import itertools
- 알고리즘의 조건 5가지
- 좋은 알고리즘
- 파이썬
- itertools
- Tree
- 들여쓰기로 표현한 트리
- 태그
- 스택
- html
- 자료구조
- 코딩 테스트
- Import
- 리스트
- 유한소수 판별하기
- list
- 큐
- 자바
- 프로그래머스
- 과일 장수
- java
- LV.1
- 코딩테스트
- python
- Today
- Total
목록Python (64)
인천의 자유인

나의 문제 풀이def solution(sizes): a = max(map(max, sizes)) #전체 최댓값 for i in sizes: if a in i: b = min(i) c=b #변경할 값 for i in sizes: if min(i) >= b and min(i) >= c: c = min(i) return a*c 변수 a는 이차원 배열 안에서 가장 큰 값을 구하는데 쓰는 것입니다. 왜냐하면 해답을 구하기 위해서는 가장 긴 변을 구해야 하기 때문입니다. 그리고 가장 큰 값의 옆에 있는 요소를 구하기 위해 for문을 사용했습니다. 그리고 마지막으로 곱할 다른 변을 구하기 위해 계속 변경을 할 수 있는..

나의 문제 풀이def solution(d, budget): a, count = 0,0 d.sort() for i in d: a += i if a > budget: break count += 1 return count a는 더하는 숫자이고 count는 물품을 구매할 수 있는 최대 개수입니다.먼저 b를 sort로 해서 오름차순으로 정렬합니다. 왜냐하면 가장 적은 수부터 구매를 할 수록 최대한 많은 양을 구입할 수 있기 때문입니다. 지갑(budget)에 들어 있는 돈의 가격을 추월하기 전까지 리스트의 구매값을 차례대로 더합니다. a가 budget에 있는 돈을 넘었을 경우 break를 하고 구매 개수를 return합니다.

나의 문제 풀이def solution(t, p): answer = [] count = 0 for i in range(len(t)-len(p)+1): answer.append(t[i:i+len(p)]) for i in answer: if int(i) answer이라는 빈 리스트에다가 p 숫자의 길이씩 추가해 줍니다.예를 들면 t가 "3141592"이고 p가 "271"이라고 한다면 p가 3자리 숫자 이기때문에 answer이라는 리스트는 세자리 숫자씩 추가해서 ["314", "141", "415", "159", "592"]를 만듭니다.그리고 이것이 만들어 졌으면 본격적으로 p와 리스트 요소와 크기 비교를 해야하기 때문에 answer 리스트의 요소를 하나씩 꺼냄..

나의 문제 풀이def solution(n): answer = '' while True: remain = n%3 answer = str(remain) + answer n = n//3 if n==0: break result = 0 for i in range(len(answer)): result = result + (int(answer[i])*(3**i)) return result 거꾸로된 3진법을 바로 구하기 위해 while True을 했습니다. 3진법의 숫자들은 나머지들이기 때문에 나머지를 구한 후 remain을 문자로 바꿔서 answer에 더해줍니다. 여기서 answer = answer + str(remain)을 ..

나의 문제 풀이def solution(arr): answer = [] i=0 while i 먼저 결과값을 만들 빈 리스트를 만듭니다.그리고 while문을 arr리스트 마지막 인덱스-1 까지 돌립니다. 왜냐하면 아래 if문을 돌릴 때 i+1이 있어서 리스트 범위 밖으로 돌렸다고 에러가 나기 때문입니다. 자신의 원소와 다음 원소가 다를 경우 answer에 그 원소를 추가하는 방식으로 돌립니다. 그러나 이렇게 할 경우 마지막 인덱스 부분이 추가가 되지 않기 때문에 이를 위해 마지막 인덱스는 추가하는 방식으로 해서 답을 구했습니다.

나의 문제 풀이def solution(s): if s.isdigit() == True and len(s) in [4,6]: return True else: return False isdigit()은 숫자인지 아닌지 판단하는 함수입니다. 알파벳 하나라도 들어가 있으면 나머지가 숫자라도 숫자가 아니기 때문에 isdigit()을 사용했습니다. 또한 문자열 길이가 4 또는 6이어야 하기 때문에 len(s) in [4,6]을 사용해서 if문을 만들었습니다.즉 s 문자열이 숫자가 True이면서 s의 길이가 4이거나 6이면 True로 하고 그것이 아니면 False를 출력하는 방식으로 프로그램을 짰습니다.

나의 문제 풀이def solution(left, right): num = 0 for x in range(left,right+1): answer = 0 for y in range(1,x+1): if x%y == 0: answer+=1 if answer%2 == 0: num += x elif answer%2 ==1: num -= x return num num은 최종 연산을 return하기 위한 변수입니다.먼저 작은 수부터 큰 수까지 한번식 루프를 돌립니다. 그런 다음 이중 for문으로 x의 약수의 개수를 찾습니다. 그리고 answer+=1를 통해 약수가 나..

나의 문제 풀이def solution(arr, divisor): answer = [] for i in arr: if i%divisor == 0: answer.append(i) return sorted(answer) if len(answer) > 0 else [-1] 먼저 arr요소를 for문으로 하나씩 루프를 돌려서 그 요소가 만약 divisor과 나누어 떨어지는 수일 경우에는 answer 리스트에 추가합니다. 단 리턴을 할 때 값을 오름차순으로 정렬해야하며 만약 나누어 떨어지는 요소가 없을 경우에는 [-1]를 출력을 해야하기 때문에 한줄 if문을 이용해서 리턴했습니다. 마지막 return에 있는 것이 이해하기 여러우시면 아래와 같은 의미라고 보시면 될 것..

나의 문제 풀이def solution(s): answer = s.upper() return True if answer.count('P') == answer.count('Y') else False 먼저 문자열s내에 있는 문자들의 개수를 파악하기 쉽게 하기위해 이 안에 있는 문자열을 모두 대문자로 변경해줍니다.그런 후에는 count함수를 사용해서 문자열 내에 있는 P의 개수와 Y의 개수가 같다면 True을 return하고 아니면 False를 return하도록 해 줍니다.

나의 문제풀이def solution(common): if common[1] - common[0] == common[2]- common[1]: return common[-1] + (common[1]-common[0]) elif common[1]//common[0] == common[2]//common[1]: return common[-1]*(common[1] // common[0]) 첫번째 if문은 등차수열일때 일입니다. 등차 수열은 첫째 항 부터 차례대로 일정한 수를 더하여 만든 수열을 의미합니다.그렇기 때문에 리스트의 첫번째 요소와 두번째 요소의 뺄셈이 자연스럽게 두번째 요소와 세번째 요소와 같을 수 밖에 없습니다. 이런 것이 지속적으로 다오기 때문에 다음 수는 마지..